我上课像:
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)仅保留保存对类型的引用或类型实例所需的最小内存,它不会调用任何构造函数。
对于诸如int
和bool
的原始类型,返回的值分别为0
或false
。
对于引用类型(类),唯一保留的内容是引用,它将为null
对于结构体,将根据上述规则保留结构体的内存,因此即使由于构造函数而不能正常将其作为null
时,引用字段也将被初始化为null
!值字段将具有其默认设置(0
,false
等)。
对于枚举类型,除非将值手动分配给枚举标签,否则值将被初始化为其第一个(0值)字段,在这种情况下,该值仍将为0,并且可能无效。
关于c# - 创建类实例中的关键字“new”和“default”之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44966629/