C# 如何更改属性的默认值?

C# 如何更改属性的默认值?,c#,properties,automatic-properties,C#,Properties,Automatic Properties,在过去,我们声明了类,并可以更改属性的默认值,如下所示: public class MyClass { private string name; public string Name { get{ if(name==null) return ""; } set{ name= value; } } } 现在我们可以做: public class MyClass { public string Name {ge

在过去,我们声明了类,并可以更改属性的默认值,如下所示:

public class MyClass
{
    private string name;

    public string Name
    {
          get{  if(name==null) return "";  }
          set{  name= value; }
    }
}
现在我们可以做:

public class MyClass
{
    public string Name {get; set;} 
}

但是如何以这种方式更改默认值呢?例如,如果名称为
null
,则我希望获得
,而不是
null

当属性中不需要任何附加逻辑时,自动属性很有用,它们不会使完整语法过时。因此,第一个示例正是您应该做的事情,没有更简单的方法来做。

是什么阻止了您像在version1中那样采用传统的方式?建议的副本显示了如何在构造函数中初始化自动属性,但请注意,这与您在此处显示的内容不同。我找不到说明这一点的博客链接,但为将来的C#版本自动实现了属性初始值设定项,因此您可以执行
public int X{get;set;}=X。请问有什么不同?还有一点不同。如果MyClass的用户将Name显式设置为null,则第一个示例仍将返回String.Empty。简单地将属性初始化为值不会有这种行为。这是否重要取决于名称的预期行为。@CodeCaster提到自动属性初始值设定项的一个地方是。@Selman22建议的C#6.0版本将有助于解决“可能重复”问题,但不是用这个。也许我可以在构造函数中完成。我有同样的结果。@我想如果你将
名称
重置为
,然后再次读取它,你会希望它返回
。构造函数不会帮你的。@svick是的,我明白你的意思。使用构造函数只是一次。@svick你的意思是我写的第一个示例和使用构造函数的方式不同吗?