我最近一直在用C#和Java编程,我很好奇哪里是初始化我的类字段的最好地方。
我应该在申报时这样做吗?
public class Dice
{
private int topFace = 1;
private Random myRand = new Random();
public void Roll()
{
// ......
}
}还是在构造函数中?
public class Dice
{
private int topFace;
private Random myRand;
public Dice()
{
topFace = 1;
myRand = new Random();
}
public void Roll()
{
// .....
}
}我真的很好奇你们中的一些老兵认为最好的做法是什么。我想保持一致,坚持一种方法。
发布于 2008-08-23 20:04:10
我的规则是:
null,false,0,0.0…)。发布于 2008-08-24 16:04:02
在C#中,这并不重要。您给出的两个代码示例完全相同。在第一个示例中,C#编译器(或者是CLR?)将构造一个空的构造函数并初始化变量,就像它们在构造函数中一样( Jon Skeet在下面的注释中解释了这一点)。如果已经有一个构造函数,那么“上面”的任何初始化都将被移到它的顶部。
就最佳实践而言,前者比后者更不容易出错,因为有人可以很容易地添加另一个构造函数,而忘记链接它。
发布于 2008-09-05 20:22:09
在这里,C#的语义与Java略有不同。在C#中,声明中的赋值是在调用超类构造函数之前执行的。在Java中,它是在允许使用'this‘之后立即完成的(对于匿名内部类特别有用),这意味着两种形式的语义确实匹配。
如果可以,将字段设为最终字段。
https://stackoverflow.com/questions/24551
复制相似问题