Quelqu'un peut-il en donner un exemple?
J'ai essayé null
, string.Empty
et l'initialisation de l'objet mais ils ne fonctionnent pas car la valeur par défaut doit être constante au moment de la compilation
Utilisez simplement l'opérateur de coalescence nul et une instance de List vide
public void Process(string param1, List<string> param2 = null) {
param2 = param2 ?? new List<String>();
}
Le problème avec cela est que si "param2" est nul et que vous affectez une nouvelle référence, elle ne sera pas accessible dans le contexte d'appel.
Vous pouvez également effectuer les opérations suivantes en utilisant default
qui IS une constante de temps de compilation (null
dans le cas d'un List<T>
):
void DoSomething(List<string> lst = default(List<string>))
{
if (lst == default(List<string>)) lst = new List<string>();
}
C'est impossible. Vous devez plutôt utiliser la surcharge de méthode.
public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
MyMethod(x, Enumerable<string>.Empty());
}
private void test(List<string> optional = null)
{
}
désolé pour la chaîne au lieu de la liste. Null fonctionne bien pour moi sur 4.0, j'utilise Visual Studio 2010