如果您有这样的对象:
public class Foo
{
private int _id;
public int id
{
get { return _id; }
set { _id = value; }
}
private string _name;
public string name
{
get { return _name; }
set { _name = value; }
}
}
你想将id初始化为-1并命名为String.Empty最佳做法是什么? (以及为什么)
这样做的:
private int _id = -1
或
在构造函数中设置_id = -1和name = String.Empty?
答案 0 :(得分:7)
这更像是一个风格问题。只有少数情况是功能性问题
答案 1 :(得分:2)
取决于您希望何时设置...
private int _id = -1
将在调用构造函数之前初始化_id。
答案 2 :(得分:2)
现场方法简洁,获得了很多选票,但我的偏好(对于简单属性)将使用自动属性,在这种情况下,您强制使用构造函数:
public Foo() {
Id = -1;
Name = "";
}
public int Id {get;set;}
public string Name {get;set;}
您也可以考虑使用[DefaultValue(-1)]
等,这有助于设计人员和序列化工具,但不会影响自动实现的属性(或常规属性)的初始值 - 它是仅供参考。
答案 3 :(得分:0)
设置它“内联”而不是使用构造函数对我来说似乎更好地表明了意图。从功能上讲,它们是一样的。
答案 4 :(得分:0)
CLR向导可能会纠正我,但我相信这两种方法在功能上是相同的,但您可以提出一个参数,即在构造函数中设置默认值更明确,更明显,但也有点混乱。
答案 5 :(得分:0)
C#编译器将内联初始化添加到构造函数的顶部,因此实际上没有区别。就个人而言,我更喜欢总是添加构造函数,即使它只是一个默认的构造函数。
答案 6 :(得分:0)
主要是风格偏好的问题。我通常在构造函数中分配它们,因为它是实例化对象时发生的所有数据和过程的理想位置。