什么是默认(对象); 在C#中做?

谷歌搜索只是关键字,但我偶然发现了一些代码说

MyVariable = default(MyObject);

我想知道这意味着什么...


  • 对于引用类型,它返回null
  • 对于Nullable<T>以外的值类型,它返回一个零初始值
  • 对于Nullable<T>它返回空(伪空)值(实际上,这是第二个项目符号的重新声明,但值得明确)
  • default(T)的最大用途是泛型,像Try...模式:

    bool TryGetValue(out T value) {
        if(NoDataIsAvailable) {
            value = default(T); // because I have to set it to *something*
            return false;
        }
        value = GetData();
        return true;
    }
    

    碰巧,我也在一些代码生成中使用它,初始化字段/变量是一件痛苦的事情 - 但是如果你知道类型:

    bool someField = default(bool);
    int someOtherField = default(int)
    global::My.Namespace.SomeType another = default(global::My.Namespace.SomeType);
    

    对于引用类型, default关键字将返回null ,对于数值类型,则返回zero

    对于struct s,它将返回初始化为零或空值的结构的每个成员,具体取决于它们是值类型还是引用类型。

    来自MSDN

    Simple Sample code :<br>
        class Foo
        {
            public string Bar { get; set; }
        }
    
        struct Bar
        {
            public int FooBar { get; set; }
            public Foo BarFoo { get; set; }
        }
    
        public class AddPrinterConnection
        {
            public static void Main()
            {
    
                int n = default(int);
                Foo f = default(Foo);
                Bar b = default(Bar);
    
                Console.WriteLine(n);
    
                if (f == null) Console.WriteLine("f is null");
    
                Console.WriteLine("b.FooBar = {0}",b.FooBar);
    
                if (b.BarFoo == null) Console.WriteLine("b.BarFoo is null");
    
            }
        }
    

    OUTPUT:

    0
    f is null
    b.FooBar = 0
    b.BarFoo is null
    

    指定类型参数的默认值。对于引用类型,它将为null,对于值类型,此值为零。

    默认

    链接地址: http://www.djcxy.com/p/9119.html

    上一篇: What does default(object); do in C#?

    下一篇: What does a double question mark do in C#?