views:

1623

answers:

4

Duplicate Question

http://stackoverflow.com/questions/271588/passing-null-arguments-to-c-methods/271600

Can I do this in c# for .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...
}

If not, is there something similar I can do?

+2  A: 

Yes, assuming you added the chevrons deliberately and you really meant:

public void myMethod(string astring, int? anint)

anint will now have a HasValue property.

roryf
+1  A: 

Yes, you can. The code above should work. See also:

http://stackoverflow.com/questions/271588/passing-null-arguments-to-c-methods/271600

which is a duplicate question.

Razzie
+3  A: 

In C# 2.0 you can do;

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

And call the method like

 myMethod("Hello", 3);
 myMethod("Hello", null);
Dead account
+8  A: 

Depends on what you want to achieve. If you want to be able to drop the anint parameter, you have to create an overload:

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

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

You can now do:

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

If you want to pass a nullable int, well, see the other answers. ;)

Inferis
+1 good suggestion to use polymorphism
Dead account
That's not polymorphism
Garry Shutler
@Garry, yep your right it isn't.
Dead account