Effective C# 学习笔记(十二) 多用成员变量初始化,少用指定赋值

由于构造函数重载的原因,你在类中声明的成员变量,很容易忘记在新的重载构造函数中初始化,所以建议你在声明时就初始化之。Initializers(类构造器)会在基类的构造函数执行前执行你声明的成员变量的初始化。

 

但也有三种例外情况

  1. 将成员变量初始化为 0null时,由于.net运行机制在运行时会默认将所有未付值的对象默认设置为0null,所以没有必要再做一次赋值来做无用的事。
  2. 你要多次为同一成员变量初始化的时候,如implicit field隐式字段

public class MyClass2

{

// declare the collection, and initialize it.

private List<string> labels = new List<string>();

MyClass2()

{

}

MyClass2(int size)

{

labels = new List<string>(size);//多次初始化了 label,因为之前的字段声明会在构造器前执行

}

}

 

//书上建议如下初始化隐式字段

public class MyClass2

{

// declare the collection, and initialize it.

private List<string> labels;

MyClass2()

{

labels = new List<string>();

}

MyClass2(int size)

{

//这里为什么写了两次初始化?没看懂?个人觉得是笔者写错了 :)

labels = new List<string>();

labels = new List<string>(size);

}

}

  1. 当你需要在初始化时,在类的内部处理异常的时候,你需要去做
原文地址:https://www.cnblogs.com/haokaibo/p/2098727.html