我上课像:

 class foo
    {
        public foo(string Text)
        {
        }
    }


在为类的创建实例运行此代码后,obj1设置为null

foo obj1 = default(foo);


通过打击代码,一切工作正常:

foo obj2= new foo("bla bla");


我有2个问题:


运行default(foo);时,默认承包商会发生什么情况?
foo obj1 = default(foo);是否等于foo obj1 = null


提前致谢。

最佳答案

本质上,default(T)仅保留保存对类型的引用或类型实例所需的最小内存,它不会调用任何构造函数。


对于诸如intbool的原始类型,返回的值分别为0false
对于引用类型(类),唯一保留的内容是引用,它将为null
对于结构体,将根据上述规则保留结构体的内存,因此即使由于构造函数而不能正常将其作为null时,引用字段也将被初始化为null!值字段将具有其默认设置(0false等)。
对于枚举类型,除非将值手动分配给枚举标签,否则值将被初始化为其第一个(0值)字段,在这种情况下,该值仍将为0,并且可能无效。

关于c# - 创建类实例中的关键字“new”和“default”之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44966629/

10-17 02:17