C# 显式初始化构造函数中私有字段的默认值。。世界跆拳道联盟?
请考虑.NET 4.0库中的以下代码片段:C# 显式初始化构造函数中私有字段的默认值。。世界跆拳道联盟?,c#,constructor,coding-style,default-value,C#,Constructor,Coding Style,Default Value,请考虑.NET 4.0库中的以下代码片段: 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
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;
}
在上面的示例中,除了公司的编码标准之外,将值类型私有字段初始化为默认值大小和版本有什么原因吗?我认为初始化集合通常是一种好做法,主要是因为它可以确保开发人员在使用时不需要初始化任何东西,假设变量已经初始化
public class Store
{
public Store()
{
// Ready to go!
Products = new List<Product>();
}
public string Id {get;set;}
public IList<Product> Products {get;set;}
}
您必须检查集合是否已初始化,如果未初始化,则执行此操作,否则。。。yawn我认为初始化集合通常是一个好的做法,主要是因为它确保开发人员在使用时不需要初始化任何东西,并且只假设变量已经初始化
public class Store
{
public Store()
{
// Ready to go!
Products = new List<Product>();
}
public string Id {get;set;}
public IList<Product> Products {get;set;}
}
您必须检查集合是否已初始化,如果未初始化,则执行此操作,否则。。。yawn在我看来,将私有变量初始化为默认值没有必要,也没有好处,除非它是标准的一部分 编辑:有时候,它可能会有意义,因为它提高了代码的可读性——例如
public const OP_GET = 0;
public const OP_ADD = 1;
...
private int operation = OP_GET;
在我看来,除非它是标准的一部分,否则将私有变量初始化为它们的默认值是没有必要的,也没有好处的 编辑:有时候,它可能会有意义,因为它提高了代码的可读性——例如
public const OP_GET = 0;
public const OP_ADD = 1;
...
private int operation = OP_GET;
如果它们是基本数据类型,则不需要初始化,它们将始终采用默认值 int、long等的默认值始终为0,而bool的默认值为false等
如果是引用类型,您可能必须进行初始化,以便它们根据您的逻辑具有一些默认值,并避免空引用错误如果它们是基本数据类型,您不需要进行初始化,它们将始终采用默认值 int、long等的默认值始终为0,而bool的默认值为false等
如果是引用类型,您可能必须进行初始化,以便根据您的逻辑使它们具有一些默认值,并避免空引用错误否,至少没有技术原因。也许在某些情况下,我们可以这样做来说明一点,例如,如果你有一个某种计数器变量,你想弄清楚它是从零开始的。但我认为这也有点可疑。不,没有,至少没有技术原因。也许在某些情况下,我们可以这样做来说明一点,例如,如果你有一个某种计数器变量,你想弄清楚它是从零开始的。但我觉得这也有点可疑