Скажите мне, что является использованием ключевого слова “по умолчанию” в c#.net

У меня есть следующий код:

У меня есть перечисление:

public enum HardwareInterfaceType
{
    Gpib = 1,
    Vxi = 2,
    GpibVxi = 3,
}

и m, использующий это перечисление как это:

 HardwareInterfaceType type = default(HardwareInterfaceType);

скажите мне, что такое ключевое слово "значение по умолчанию", делает здесь? каково использование его?

5
задан this. __curious_geek 27 May 2010 в 05:17
поделиться

4 ответа

Я полагаю, что по умолчанию стоит 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
7
ответ дан 18 December 2019 в 09:05
поделиться

ключевое слово по умолчанию в основном используется при написании универсального кода.

В универсальных классах и методах возникает одна проблема: как назначить значение по умолчанию параметризованному типу 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
4
ответ дан 18 December 2019 в 09:05
поделиться

default предоставит значение по умолчанию для типа языка - в случае числовых значений и, по расширению, перечислений, нуль. для ссылочных типов значением по умолчанию будет null .

Чаще используется с универсальными шаблонами, в которых тип не известен заранее.

5
ответ дан 18 December 2019 в 09:05
поделиться

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

один из способов, как это

HardwareInterfaceType type = new HardwareInterfaceType();

и второй способ подобен это также

HardwareInterfaceType type = default(HardwareInterfaceType);

Приведенный выше код создает объект hardwareinterfacetype, но это не создает никаких новых объем памяти.

2
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: