C # PHP gibi isteğe bağlı parametreler vardır?

2 Cevap

Eğer bir parametre göndermek yoksa PHP optional parameters, bir varsayılan değere atanacak ile:

public function getCustomer(id, optionalMessage = "(no message)") {
    ...
}

C # ben genelde bu çözmek C# method overloading, örneğin:

public void GetCustomer(int id) 
{
    ...
}

public void GetCustomer(int id, string optionalMessage)
{
    ...
}

ama ben PHP örnekte olduğu gibi, does C# also have some sugary syntax to do optional parameters as well, pragmatik PHP varyant özledim?

2 Cevap

Not C # 3.0 içinde; Bu özellik C # 4.0 için sayfadadır - bkz here.

Şimdilik, farklı yükleniminden kullanmanız gerekir:

public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}

Önerilen sözdizimi olacaktır:

public void Foo(int a, string b = "") {...}

herhangi ile adı:

Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional  by name

Hayır, ancak isteğe bağlı parametreleri aynı tipte (ya da bazı döküm yaptığını umursamıyorum) vardır, özellikle bir ölçüde onları taklit edebilirsiniz.

Sen params bayrağını kullanabilirsiniz.

void paramsExample(object arg1, object arg2, params object[] argsRest)

Gerçi işaret etmesi, bu güvenliği yazın kaybeder ve parametreler veya sipariş hiçbir tür zorlama yoktur.