У меня есть следующий код:
У меня есть перечисление:
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
и m, использующий это перечисление как это:
HardwareInterfaceType type = default(HardwareInterfaceType);
скажите мне, что такое ключевое слово "значение по умолчанию", делает здесь? каково использование его?
Я полагаю, что по умолчанию стоит 0, поэтому у вас будет сгенерирован неверный HardwareInterfaceType. Мне лично не нравится такое кодирование перечислений. IMO более понятно определить значение Enum "Undefined" или "None", а затем инициализировать переменную этим значением.
Одна из "проблем" с перечислениями заключается в том, что они могут быть инициализированы значением, которое не существует в перечислении. Первоначальный программист мог подумать, что перечисление будет инициализировано каким-то допустимым значением в определении Enum, если он использовал ключевое слово "default". Это не так, и IMO это вообще не лучшее использование ключевого слова "default".
var foobar = default(HardwareInterfaceType);
Console.WriteLine(Enum.IsDefined(typeof(HardwareInterfaceType), foobar)); //returns false
Console.WriteLine(foobar); //returns 0
ключевое слово по умолчанию в основном используется при написании универсального кода.
В универсальных классах и методах возникает одна проблема: как назначить значение по умолчанию параметризованному типу T, если вы не знаете, будет ли T ссылочным типом или типом значения, и если T является типом значения, то будет ли это будет числовое значение или структура.
В вашем случае он присваивает 0.
static void Main(string[] args)
{
HardwareInterfaceType type = default(HardwareInterfaceType);
Console.WriteLine(type.ToString());
type = HardwareInterfaceType.Gpib;
Console.WriteLine(type.ToString());
Console.ReadLine();
}
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
//output
0
Gpib
default
предоставит значение по умолчанию для типа языка - в случае числовых значений и, по расширению, перечислений, нуль. для ссылочных типов значением по умолчанию будет null
.
Чаще используется с универсальными шаблонами, в которых тип не известен заранее.
Я думаю, что слово ключ по умолчанию используется, когда вы не должны создавать новый экземпляр любого объекта класса говорят:
один из способов, как это
HardwareInterfaceType type = new HardwareInterfaceType();
и второй способ подобен это также
HardwareInterfaceType type = default(HardwareInterfaceType);
Приведенный выше код создает объект hardwareinterfacetype, но это не создает никаких новых объем памяти.