代码之家  ›  专栏  ›  技术社区  ›  Grief Coder

正在显式初始化构造函数中私有字段的默认值。。世界跆拳道联盟?

  •  1
  • Grief Coder  · 技术社区  · 14 年前

    请考虑.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 = 0; 
        version = 0; 
    }
    

    将值类型的私有字段初始化为默认值有什么原因吗( size version 在上面的例子中)明确地不是公司的编码标准?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Carlos    14 年前

    不,没有,至少没有技术上的原因。也许在某些情况下,人们可以这样做来说明问题,例如,如果你有一个某种计数器变量,你想弄清楚它是从零开始的。但我觉得这也有点可疑。

        2
  •  1
  •   rebelliard    14 年前

    我认为初始化集合通常是一种很好的做法,主要是因为它可以确保开发人员在使用时不需要初始化任何东西,并且只假设变量已经初始化。

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

    你必须检查集合是否已经初始化,如果没有,否则。。。 打哈欠

        3
  •  1
  •   VinayC    14 年前

    价值观(除非它是标准的一部分)。

    public const OP_GET = 0;
    public const OP_ADD = 1;
    ...
    
    private int operation = OP_GET;
    
        4
  •  1
  •   ajay_whiz    14 年前

    如果它们是基本数据类型,则不需要初始化,它们将始终采用默认值

    int、long等的默认值始终为0,而bool的默认值为false等。