10

Consider the following method example:

public void MyMethod (string par1, bool par2 = "true", string par3="")
{
}

Now let's say that I call MyMethod and set par3's value to "IamString".

How could I do that without setting par2's value to true or false?

I basically want to leave par2 value to its default.

I'm asking this because in Flash's ActionScript it is possible to do that by using the keyword default so I could call MyMethod ("somestring", default, "IamString") and par2 would be interpreted as true, which is its default value. I wonder if it is possible in C# as well.

burning_LEGION
  • 13,246
  • 8
  • 40
  • 52
IneedHelp
  • 1,630
  • 1
  • 27
  • 58

2 Answers2

17
public void MyMethod (string par1, bool par2 = "true", string par3=""){}
Myclass.MyMethod(par1:"par1", par3:"par3");

By the way, this won't work: bool par2 = "true"

string par2 = "true"

or

bool par2 = true

Talking about default values, you could also use this to get the default value for a particular type:

default(T)

SeToY
  • 5,777
  • 12
  • 54
  • 94
  • Thank you! And yeah, you're right bool par2 = "true" won't work. It's a mistake I've did while trying to layout a simple example. – IneedHelp Aug 10 '12 at 12:29
  • Yes, it just doesn't let me because you recently edited your answer. I will be able to accept it in 1 minute. – IneedHelp Aug 10 '12 at 12:32
  • Warning to anyone who takes this as a correct answer: using default(T) will NOT respect the default value provided in the declaration of the function being called, it will instead use the default value for that type, which for a bool will be false even though the function wants the default value to be true – John Thoits Mar 02 '23 at 15:47
13

You can specify this by name the parameter:

instance.MyMethod( "Hello", par3:"bla" );

Have a look here.

And there is another bug:

bool par2 = true

is correct..

tuxtimo
  • 2,730
  • 20
  • 29