当使用自动实现的属性时,如何将字符串设置为"":
public string Blah {get; set;}
Run Code Online (Sandbox Code Playgroud)
Bev*_*van 10
当您使用这样的自动属性时,属性类型的默认值是值,除非您在其他地方初始化它,就像在构造函数中一样:
public class Person
{
public string Name { get; set; }
public Person()
{
Name = string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您的自动属性具有公共设置器(如上所示),那么您仍然可以向其他人设置名称null,这可能会导致一些问题.
我可以看到两种解决方案,具体取决于您的背景.
首先,将自动属性更改为私有setter:
public class Person
{
public string Name { get; private set; }
public Person()
{
Name = string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
这可以防止其他任何人改变属性.如果这不方便,您可以使用完整属性,并利用??(null-coalescing)运算符来防止空值:
public class Person
{
public string Name
{
get { return mName; }
set { mName = value ?? string.empty; }
}
public Person()
{
Name = string.Empty;
}
private string mName;
}
Run Code Online (Sandbox Code Playgroud)