Подтвердить что ты не робот

Каково использование ключевого слова `default` в С#?

  • Каково использование ключевого слова default в С#?
  • Входит ли он в С# 3.0?
4b9b3361

Ответ 1

Ключевое слово default является контекстуальным, поскольку оно имеет несколько способов использования. Я предполагаю, что вы имеете в виду его новое значение С# 2, в котором оно возвращает значение по умолчанию типа. Для ссылочных типов это null, а для типов значений это новый экземпляр, все нуль.

Вот несколько примеров, чтобы продемонстрировать, что я имею в виду:

using System;

class Example
{
    static void Main()
    {
        Console.WriteLine(default(Int32)); // Prints "0"
        Console.WriteLine(default(Boolean)); // Prints "False"
        Console.WriteLine(default(String)); // Prints nothing (because it is null)
    }
}

Ответ 2

Вы можете использовать значение по умолчанию, чтобы получить значение по умолчанию Generic Type.

public T Foo<T>()
{
    .
    .
    .
    return default(T);
}

Ответ 3

Наиболее распространенное использование с дженериками; в то время как он работает для "обычных" типов (т.е. default(string) и т.д.), это довольно необычно в рукописном коде.

Однако я использую этот подход при создании кода, так как это означает, что мне не нужно жестко кодировать все разные значения по умолчанию - я могу просто выяснить тип и использовать default(TypeName) в сгенерированном коде.

В generics классическое использование - это шаблон TryGetValue:

public static bool TryGetValue(string key, out T value) {
    if(canFindIt) {
        value = ...;
        return true;
    }
    value = default(T);
    return false;
}

Здесь у нас есть, чтобы назначить значение для выхода из метода, но вызывающему абоненту все равно не важно, что это такое. Вы можете сравнить это с ограничением конструктора:

public static T CreateAndInit<T>() where T : ISomeInterface, new() {
    T t = new T();
    t.SomeMethodOnInterface();
    return t;
}

Ответ 4

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

Первое использование выполняется в контексте оператора switch, доступного с С# 1.0:
http://msdn.microsoft.com/en-us/library/06tc147t(VS.80).aspx

Второе использование используется в контексте generics при инициализации экземпляра типичного типа, доступного с С# 2.0:
http://msdn.microsoft.com/en-us/library/xwth0h0d(VS.80).aspx

Ответ 5

"default" ключевое слово (кроме ключа switch) помогает вам инициализировать экземпляр объекта, такого как класс, список и другие типы. Он используется из-за его универсального свойства, где он позволяет вам назначать значения по умолчанию для типов, когда вы делаете не знать его ценность как продвинутый способ избежать ошибок в вашем дальнейшем (будущем) коде.

Ответ 6

Повторяя и подчеркивая его, используйте в дженериках и не только в генерации кода.

Если вам нужно инициализировать по умолчанию (уже подозрительно вонючий в моей книге), будьте ясны. Просто сделай это.