处理属性的“新”,更短的方式是否有任何进一步的好处,除了更短的代码 - 如性能优势,更少的内存使用等?
书写
public string StrVariable { get; set;}
而不是
private string strVariable;
public string StrVariable
{
set
{
strVariable = value;
}
get
{
return strVariable;
}
}
是否有任何缺点 - 也许有人会认为代码少可读,不那么明确?
答案 0 :(得分:4)
答案 1 :(得分:3)
特定情况下的一大缺点 - 您将失去对字段名称的控制权。这可能听起来微不足道,但如果您使用二进制序列化(通过BinaryFormatter),它可能is a big problem。
其他事项:
readonly
在字段级别struct
,您需要在自定义构造函数中调用: this()
答案 2 :(得分:0)
我可以看到的一个缺点是,如果你想在get / set例程中做其他事情。增加一个计数器或类似的东西。如果你还没有,可以验证输入。
答案 3 :(得分:0)
集合属性也是一个问题。它们未使用Autoproperties进行初始化。
示例:
public class foo
{
public List<String> S1 { get; set; }
private List<string> s = new List<string>();
public List<String> S2
{
get { return s;}
set { s = value; }
}
}
foo f = new foo();
f.S1.Add("thing");
f.S2.Add("thing");
f.S1.Add将使用nullref异常进行炸弹。