- Каково использование ключевого слова
default
в С#? - Входит ли он в С# 3.0?
Каково использование ключевого слова `default` в С#?
Ответ 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
Повторяя и подчеркивая его, используйте в дженериках и не только в генерации кода.
Если вам нужно инициализировать по умолчанию (уже подозрительно вонючий в моей книге), будьте ясны. Просто сделай это.