2009-03-12 1 views
9

Дубликат ВопросNullable Метод Аргументы в C#

Passing null arguments to C# methods

Могу ли я сделать это в C# для .NET 2.0?

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

Если нет, есть ли что-то подобное, что я могу сделать?

+0

Я выполнил поиск, и дубликат не появился или это бы ответили на это. Спасибо всем. – 2009-03-12 12:25:20

ответ

17

Да, если вы добавили шевроны сознательно, и вы на самом деле имел в виду:

public void myMethod(string astring, int? anint) 

anint теперь будет HasValue недвижимость.

7

В C# 2.0 вы можете сделать;

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

И вызвать метод как

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

Зависит от того, что вы хотите достичь. Если вы хотите быть в состоянии отказаться от параметра anint, вы должны создать перегрузку:

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

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

Теперь вы можете сделать:

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

Если вы хотите передать обнуляемое Int, ну, см другие ответы. ;)

+0

+1 хорошее предложение использовать полиморфизм –

+3

Это не полиморфизм –

+1

@Garry, да, ваше право это не так. –