C# 我需要为AutoProperty呼叫new吗?

C# 我需要为AutoProperty呼叫new吗?,c#,properties,C#,Properties,如果我有自动属性: public List<IObjects> MyObjects {get; set;} 公共列表MyObjects{get;set;} 我是否需要调用MyObjects=newlist()在构造函数中?如果不将自动属性设置为任何其他值,则自动属性将具有其默认值。这相当于MyObjects=default(List)。在这种情况下,这将是空的。我要重点讨论它是如何default(T),因为在类似int的情况下,它将是default(int)(即0),因此重要的是

如果我有自动属性:

public List<IObjects> MyObjects {get; set;}
公共列表MyObjects{get;set;}

我是否需要调用
MyObjects=newlist()在构造函数中?

如果不将自动属性设置为任何其他值,则自动属性将具有其默认值。这相当于
MyObjects=default(List)
。在这种情况下,这将是空的。我要重点讨论它是如何
default(T)
,因为在类似int的情况下,它将是
default(int)
(即0),因此重要的是将其视为默认值而不是null


值得注意的是,您不必在构造函数中执行此操作-它不是只读的。您可以很高兴地将它设置为其他位置的值(例如
MyClass.MyObjects=myList
),或者如果您愿意的话(这样做是有意义的)。

无需在构造函数中初始化自动实现的属性。它具有默认值,并且为空。

如果要初始化它,请选择“是”。如果在不初始化的情况下尝试添加到列表中,会发生什么情况?@Wheels73 Backing fields将为空,我希望NullReferenceException@YthioCsi-没错。你有你的答案!:)一般来说,可设置的
List
属性不能很好地工作。它们允许外部代码完全替换集合。