Как я могу заставить метод иметь значения по умолчанию для параметров?
Параметры метода по умолчанию в C#
Ответы (4)
Простое решение — перегрузить метод:
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# in Depth. (Глава 13 в данном случае.)
C# in Depth
книгу неверна. Веб-сайт manning.com
возвращает файл PHP, который перенаправляет на веб-сайт, который не может быть загружен.
- person Nikolay Kostov; 21.07.2015
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).