在VS 2010 C#中,{get; set;}访问器没有初始值是因为C#编译器默认会为自动属性的访问器生成一个私有的后备字段,该字段用于存储属性的值。这个后备字段的初始值由编译器自动分配,通常为属性类型的默认值。
在自动属性中,我们可以省略后备字段的定义,直接使用{get; set;}访问器来定义属性。这样做的好处是简化了代码,减少了冗余的代码量。
然而,由于编译器自动生成的后备字段是私有的,并且没有初始值,所以在使用自动属性时,如果没有显式地给属性赋初始值,那么属性的初始值将为其类型的默认值。例如,对于整型属性,初始值为0;对于字符串属性,初始值为null。
需要注意的是,如果我们在属性定义时显式地给属性赋初始值,那么这个初始值将会覆盖类型的默认值。例如:
public int MyProperty { get; set; } = 10;
在上述代码中,MyProperty属性的初始值被显式地设置为10,而不是默认的0。
总结起来,{get; set;}访问器没有初始值是因为C#编译器会为自动属性生成一个私有的后备字段,该字段没有初始值,而属性的初始值由属性类型的默认值决定。如果需要给属性赋初始值,可以在属性定义时显式地进行赋值。
领取专属 10元无门槛券
手把手带您无忧上云