С# 3.5 Необязательный и DefaultValue для параметров
Я использую С#.net 3.5 для создания приложения. Я работаю с необязательными атрибутами параметра в .net 4.0 без проблем. Я заметил, что с помощью 3.5 есть опция (обходной путь), чтобы добавить следующие атрибуты к вашему методу следующим образом:
public static void MethodName(string name, [Optional][DefaultValue(null)]string placeHolder)
{
}
Несмотря на то, что я добавил атрибуты метода, если я попытаюсь вызвать его так:
MethodName("test");
Компилятор будет жаловаться, что он ищет два параметра вместо одного. Возможно ли это сделать с помощью С#.net 3.5? Я что-то делаю неправильно?
Ответы
Ответ 1
Необязательными параметрами являются языковые функции С# 4.0, поэтому неважно, в какой среде вы настроите таргетинг, но вы должны скомпилировать его с помощью VS 2010 или новее.
Используйте этот синтаксис в VS 2010 или новее:
public static void MethodName(string name, string placeHolder = null)
{
// body
}
Или это в старой версии:
public static void MethodName(string name, string placeHolder)
{
// body
}
public static void MethodName(string name)
{
MethodName(name, null);
}
Ответ 2
Атрибут Optional
доступен с С# 1.0 и используется при взаимодействии с внешним кодом, он не влияет на вызовы методов в вашем собственном коде.
Поскольку в С# 3 нет дополнительных параметров, вы можете использовать перегрузку:
public static void MethodName(string name, string placeHolder) {
...
}
public static void MethodName(string name) {
MethodName(name, null);
}
(Боковое примечание: нет версии С# 3.5, которая является версией фреймворка.)
Ответ 3
Взгляните на следующий поток StackOverflow:
С# Дополнительные параметры в .net 3.5
Нельзя использовать копию, вставляя все, что было сказано там, так как поток охватывает почти все.
Удачи.