Ответ 1
Вы можете сделать это только на С# 4, в котором представлены именованные аргументы и необязательные параметры:
public void Foo(int x = 10)
{
Console.WriteLine(x);
}
...
Foo(); // Prints 10
Обратите внимание, что значение по умолчанию должно быть константой - либо обычной константой времени компиляции (например, литералом), либо:
- Беспараметрический конструктор типа значения
-
default(T)
для некоторого типаT
Также обратите внимание, что значение по умолчанию встроено в сборку вызывающего абонента (при условии, что вы опускаете соответствующий аргумент) - поэтому, если вы измените значение по умолчанию, не перестраивая код вызова, вы все равно увидите старое значение.
Это (и другие новые функции на С# 4) описаны во втором выпуске С# в глубине. (Глава 13 в этом случае.)