2009-03-16 7 views
2

с PHP необязательных параметров, если вы не отправите параметр будет назначен значение по умолчанию:Есть ли в C# необязательные параметры PHP?

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

в C# Я вообще решить эту проблему с C метод # перегрузки, например:

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

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

но я скучаю прагматический PHP вариант, делает C# также есть сладкий синтаксис, чтобы сделать дополнительные параметры, а, как в примере PHP?

ответ

8

Не в C# 3.0; эта функция находится на листе для C# 4.0 - см. here.

На данный момент, вы должны будете использовать различные перегруженные:

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

Предлагаемый синтаксис должен быть:

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

вызывается с любым из:

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

Ваше сообщение в блоге указало причину, по которой я спросил: я видел, что она почти решена с именованными параметрами (например, в пользовательских атрибутах), но она не была на 100% там (как вы полагаете, должны быть сеттеры), приятно , благодаря –

4

Нет, но вы можете имитировать их до некоторой степени, особенно если ваши необязательные параметры одного типа (или вы не возражаете делать некоторые кастинги г).

Вы можете использовать флаг params.

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

Следует отметить, что это теряет безопасность типов, и нет никаких параметров принудительного применения параметров или порядка.

 Смежные вопросы

  • Нет связанных вопросов^_^