Яке використання ключового слова `за замовчуванням 'у C #?


Відповіді:


101

defaultКлючове слово контекстне , так як він має кілька використань. Я припускаю, що ви маєте на увазі його нове значення C # 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)
    }
}

80

Ви можете використовувати значення за замовчуванням, щоб отримати значення за замовчуванням Generic Typeтакож.

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

33

Найбільш поширене використання з генериками ; хоча це працює для "звичайних" типів (тобто default(string)тощо), це досить рідкісне явище у рукописних кодах.

Однак я використовую цей підхід під час генерації коду, оскільки це означає, що мені не потрібно жорстко кодувати всі різні за замовчуванням - я можу просто з'ясувати тип і використовувати default(TypeName)в створеному коді.

У дженериках класичним використанням є 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;
}

1
+1 там, де T: new () проти типового (T). Я віддаю перевагу де T: new (), оскільки він називає повний конструктор загального класу. Але за замовчуванням (T) надзвичайно корисно, коли обмеження new () неможливо задовольнити. Тобто незмінна / одиночна заборона new ().
Robert J. Good

13

За замовчуванням ключове слово має різну семантику в залежності від контексту використання.

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

Друге використання відбувається в контексті загальних джерел, коли ініціалізується екземпляр загального типу, доступний з C # 2.0:
http://msdn.microsoft.com/en-us/library/xwth0h0d(VS.80).aspx


4

Ключове слово "за замовчуванням" (крім перемикача) допомагає вам ініціалізувати екземпляр такого об'єкта, як клас, список та інші типи. Використовується через загальну властивість, де допомагає призначати значення за замовчуванням типам, коли ви не знаєте його значення як попередній спосіб уникнути помилок у вашому подальшому (майбутньому) коді.


0

Повторюючи та наголошуючи на тому, що воно використовується у дженериках та чимось іншому, крім генерації коду.

Якщо вам доведеться ініціалізувати за замовчуванням (що вже підозріло в моїй книзі), будьте зрозумілі. Просто зроби це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.