Как сделать так, чтобы у метода были значения параметров по умолчанию?
Простое решение - перегрузить метод:
private void Foo(int length)
{
}
private void Foo()
{
Foo(20);
}
Вы можете сделать это только в C # 4, в котором представлены как именованные аргументы, так и необязательные параметры :
public void Foo(int x = 10)
{
Console.WriteLine(x);
}
...
Foo(); // Prints 10
Обратите внимание, что значение по умолчанию должно быть константой - либо нормальной константой времени компиляции (например, литерал) или:
default (T)
для некоторого типа T
Также обратите внимание, что значение по умолчанию встроено в вызывающего сборка (при условии, что вы опускаете соответствующий аргумент) - поэтому, если вы измените значение по умолчанию, не перестраивая вызывающий код, вы все равно увидите старое значение.
Эта (и другие новые возможности C # 4) рассматриваются во втором издании Подробно о C # . (В данном случае - Глава 13.)
C# 4.0 позволяет использовать именованные и необязательные аргументы:
public void ExampleMethod(
int required,
string optionalstr = "default string",
int optionalint = 10
)
В предыдущих версиях можно было имитировать параметры по умолчанию с помощью перегрузки методов.
Вы просто объявляете их со значениями по умолчанию - они называются опциональные параметры:
public void myMethod(string param1 = "default", int param2 = 3)
{
}
Это было введено в C# 4.0 (поэтому вам нужно использовать visual studio 2010).