Ваше предложение result = result
не сработает, потому что это параметр out
- он точно не назначен для начала, поэтому вы не можете прочитать его значение до тех пор, пока вам не будет присвоено значение для него.
result = null;
- определенно правильный путь для параметра object
out. В основном используйте default(T)
для любого типа T
, который у вас есть. (Оператор default
полезен в универсальных методах - для неуниверсального кода я обычно просто использовал бы null
, 0, что угодно.)
РЕДАКТИРОВАТЬ: Исходя из комментария Бориса, возможно, стоит пояснить разницу между параметром ref
и параметром out
:
Выходные параметры
- Не должен быть обязательно назначен вызывающим абонентом
- Обрабатываются как "не определенно назначенные" в начале метода (вы не можете прочитать значение, не присвоив его сначала, как локальная переменная)
- Должно быть обязательно назначено (методом), прежде чем метод завершится нормально (то есть, прежде чем он вернется; он может выдать исключение, не назначая значение параметру)
Параметры Ref
- Do должен быть точно назначен вызывающим абонентом
- Обрабатываются как «определенно назначенные» в начале метода (так что вы можете прочитать значение, не назначая его первым)
- Нет необходимости назначать в методе (т. Е. Вы можете оставить параметр с его исходным значением)