2009-03-12 15 views
9

en double QuestionNullable Méthode Arguments en C#

Passing null arguments to C# methods

Puis-je faire cela en C# .Net 2.0 pour?

public void myMethod(string astring, int? anint) 
{ 
//some code in which I may have an int to work with 
//or I may not... 
} 

Sinon, y at-il quelque chose de similaire que je peux faire?

+0

J'ai fait une recherche et le doublon n'est pas venu ou cela aurait répondu à ceci. Merci a tous. –

Répondre

17

Oui, en supposant ajouté les Chevrons délibérément et vous voulait vraiment dire:

public void myMethod(string astring, int? anint) 

anint va maintenant avoir une propriété HasValue.

7

En C# 2.0 vous pouvez faire;

public void myMethod(string astring, int? anint) 
{ 
    //some code in which I may have an int to work with 
    //or I may not... 
} 

Et appelez la méthode comme

myMethod("Hello", 3); 
myMethod("Hello", null); 
14

dépend de ce que vous voulez atteindre. Si vous voulez être en mesure de laisser tomber le paramètre anint, vous devez créer une surcharge:

public void myMethod(string astring, int anint) 
{ 
} 

public void myMethod(string astring) 
{ 
    myMethod(astring, 0); // or some other default value for anint 
} 

Vous pouvez maintenant faire:

myMethod("boo"); // equivalent to myMethod("boo", 0); 
myMethod("boo", 12); 

Si vous voulez passer un int nullable, bien, voir les autres réponses. ;)

+0

+1 bonne suggestion d'utiliser le polymorphisme –

+3

Ce n'est pas le polymorphisme –

+1

@Garry, oui votre droit, il ne l'est pas. –