【发布时间】:2011-07-11 19:36:09
【问题描述】:
两者有什么根本区别
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
和
public string Name {get; set;}
【问题讨论】:
标签: c# oop object properties
两者有什么根本区别
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
和
public string Name {get; set;}
【问题讨论】:
标签: c# oop object properties
【讨论】:
没有什么基本的,您可以通常安全地在它们之间进行更改....直到某些东西使用了字段名称(我在这里查看BinaryFormatter...)。
否则,不。您通常可以在不破坏事物的情况下进行切换,例如添加逻辑或向字段添加属性。
【讨论】:
基本上没有根本的区别,如果您想为 20 个属性执行此操作,则 #2 只是为您节省了很多行,而您不需要预先封装但希望有未来的选择。
【讨论】:
对于您的类的外部消费者(假设 _name 是私有的),它们是相同的,除非您使用像 BinaryFormatter 这样使用反射来存储对象的内部状态的东西。
对于您的班级,主要区别在于您在使用自动属性时无权访问该字段。这意味着您不能做一些事情,例如将属性用作 ref 或 out 参数。例如,如果您有一个 int 值并且您正在读取构造函数中的默认值,则不能说 Int32.TryParse(s, out Range)。你可以说Int32.TryParse(s, out _range)。
【讨论】: