Обнуляемый список <> как параметр out - PullRequest
4 голосов
/ 08 февраля 2010

Возможно ли это?

private void Test(out List<ExampleClass>? ExClass)
{

}

Обнуляемый список <>, который также является выходным параметром?

Ответы [ 4 ]

20 голосов
/ 08 февраля 2010

List<T> является ссылочным типом (классом), поэтому ? не требуется. Просто присвойте null параметру ExClass в теле метода.

9 голосов
/ 08 февраля 2010

Как сказал Антон, вам не нужно использовать Nullable<T> - но это может быть параметр out:

private void Test(out List<ExampleClass> foo)

Возможно, вы путаете обнуляемый List<T> с List<T?>, который будет действителен для типов значений ... например, вы можете использовать:

private void Test(out List<Guid?> foo)

, который будет выходным параметром, который представляет собой список обнуляемых направляющих.

С другой стороны, не очень хорошо иметь параметры out в void методах - обычно вы должны использовать вместо этого тип возврата.

2 голосов
/ 08 февраля 2010

Используйте ? только для значений типа Value.

0 голосов
/ 08 февраля 2010

Быть параметром out или нет здесь не имеет значения. Но вы не можете сделать Nullable<T> с классом; T должно быть структурой. В противном случае компилятор будет жаловаться.

В дополнение к этому считается плохим стилем прописное имя параметра (используйте exClass вместо ExClass). Ваши программы будут работать так же, но любой, кто читает ваш код, может быть введен в заблуждение.

...