2010-02-08 5 views
4

Est-ce possible?Nullable List <> comme paramètre out

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

} 

Une liste annulable <> qui est aussi un paramètre out?

+0

Puisque vous avez déjà écrit le code, pourquoi ne pas l'avoir essayé vous-même? – stakx

Répondre

20

List<T> est un type de référence (classe), donc aucun ? n'est requis. Attribuez simplement le paramètre null au paramètre ExClass dans le corps de la méthode.

+0

Une autre façon est d'avoir 0 (zéro) éléments dans la liste ou la liste vide. – Sharique

9

Comme Anton a dit, vous n'avez pas besoin d'utiliser Nullable<T> - mais il pourrait certainement être un paramètre out:

private void Test(out List<ExampleClass> foo) 

Il est possible que vous confondez un List<T> nullable avec une List<T?> qui serait valable pour types de valeurs ... par exemple, vous pouvez utiliser:

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

qui serait un paramètre sur lequel une liste de GUIDs nullables. Par contre, il n'est généralement pas intéressant d'avoir des paramètres out dans les méthodes void - vous devriez plutôt l'utiliser comme type de retour.

+0

merci Jon. la méthode montrée était un exemple seulement et merci de fournir une explication. – Trent

2

Utilisez ? uniquement pour les ValueTypes Nullable.

0

Etre un paramètre out ou non est sans importance ici. Mais vous ne pouvez pas faire un Nullable<T> avec une classe; T doit être une structure. Sinon, le compilateur va se plaindre. En plus de cela, il est considéré comme un mauvais style de capitaliser le nom d'un paramètre (utilisez exClass au lieu de). Vos programmes fonctionneront de la même manière, mais quiconque lit votre code pourrait être induit en erreur.

Questions connexes