Могу ли я указать значение по умолчанию для параметров или дополнительных параметров в функциях С#? - программирование
Подтвердить что ты не робот

Могу ли я указать значение по умолчанию для параметров или дополнительных параметров в функциях С#?

Можно ли указать параметры по умолчанию на С#?

В C:

void fun(int i = 1)
{
    printf("%d", i);
}

Можем ли мы дать параметрам значение по умолчанию? Возможно ли это на С#? Если да, можем ли мы избежать перегрузки функций?

Всегда полезно использовать необязательный параметр для существующей функции. Если вы работаете над проектом, которому приходится ссылаться на класс, имеющий функцию, и мы изменили параметр с необязательным значением, он может выдать исключение времени выполнения, что метод не найден.

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

function Add(int a, int b);

Это будет вызвано следующим образом:

Add(10, 10);

Но если мы добавим необязательный параметр, например,

function Add(int a, int b, int c = 0);

тогда компилятор ожидает

Add(10, 10, 0);

На самом деле мы вызываем этот Add(10, 10), и эта функция не будет доступна в этом классе и вызовет исключение времени выполнения.

Это происходит, добавляя новый параметр к функции, вызываемой множеством мест, и я не уверен, что это произойдет каждый раз. Но я предлагаю вам перегрузить функцию.

Всегда нужно перегружать метод, который имеет необязательный параметр. Также, если вы работаете с функциями, имеющими более одного необязательного параметра, тогда полезно передать значение, используя имя параметра.

function Add(int a, int b, int c = 0);

Всегда полезно вызвать эту функцию следующим образом.

Add(10, 20, c:30);
4b9b3361

Ответ 1

Именно так вы делаете это на С#, но эта функция была впервые добавлена ​​в .NET 4.0

Ответ 2

Это возможно только с С# 4.0

Однако, когда вы используете версию С#, до 4.0, вы можете обойти это с помощью перегруженных методов:

public void Func( int i, int j )
{
    Console.WriteLine (String.Format ("i = {0}, j = {1}", i, j));
}

public void Func( int i )
{
    Func (i, 4);
}

public void Func ()
{
    Func (5);
}

(Или вы можете перейти на С# 4.0 offcourse).

Ответ 3

Да. См. Именованные и необязательные аргументы. Обратите внимание, что значение по умолчанию должно быть константой, так что это нормально:

public string Foo(string myParam = "default value") // constant, OK
{
}

но это не так:

public void Bar(string myParam = Foo()) // not a constant, not OK
{
}

Ответ 4

Да, но вам нужно использовать .NET 3.5 и С# 4.0, чтобы получить эту функциональность.

Эта страница MSDN содержит дополнительную информацию.

Ответ 5

Эта функциональность доступна на С# 4.0 - она ​​была представлена ​​в Visual Studio 2010. И вы можете использовать ее в проекте для .NET 3.5. Поэтому нет необходимости обновлять старые проекты в .NET 3.5 до .NET 4.0.

Вам нужно просто использовать Visual Studio 2010, но помните, что он должен скомпилировать версию языка по умолчанию (установить его в проекте Properties- > Buid- > Advanced...)

Эта страница MSDN содержит дополнительную информацию о дополнительных параметрах в VS 2010.

Ответ 6

Это функция С# 4.0, но не была возможна без использования перегрузки функций до этой версии.