2010-08-31 95 views
1

考虑从.NET 4.0库下面的代码片段:显式地初始化构造函数中私有字段的默认值.. WTF?

private T[] array; 
private static T[] emptyArray; 
private int size; 
private int version; 

static Stack() 
{ 
    Stack<T>.emptyArray = new T[0]; 
} 

public Stack() 
{ 
    array = Stack<T>.emptyArray; 
    size = 0; 
    version = 0; 
} 

是否有背后的初始化值类型的私有字段默认值(在本例中sizeversion以上)的任何理由明确地比公司的编码标准等?

回答

1

不,没有,至少没有技术原因。也许在某些情况下,有人可能会这样做,例如,如果你有某种计数器变量,并且你想清楚它从零开始。但我认为即使这是有点可疑的。

0

我认为初始化集合通常是一种很好的做法,主要是因为它确保开发人员不需要初始化任何使用情况,并且假定变量已经初始化。

public class Store 
{ 
    public Store() 
    { 
     // Ready to go! 
     Products = new List<Product>(); 
    } 

    public string Id {get;set;} 
    public IList<Product> Products {get;set;} 
} 

您可以通过其来检查集合已被初始化,如果不做的话,别人的喧闹跳... 哈欠

1

IMO,没有必要或受益于私人初始化变量到它们的默认值值(除非它是标准的一部分)。

编辑:几次,它可能是有意义的(因为它提高了代码的可读性) - 例如

public const OP_GET = 0; 
public const OP_ADD = 1; 
... 

private int operation = OP_GET; 
1

如果他们是原始数据类型,你不必初始化他们总是把他们的默认值

的int,long等总是有其默认值为0,而布尔将有假等

,如果它是你可能必须初始化,使他们有一些默认值的引用类型(根据你的逻辑)并避免空引用错误

相关问题