Effective C# 使用成员初始化器而不是赋值语句
网络编程 2021-07-04 22:40www.168986.cn编程入门
一般情况下,一个类都会有多个构造函数。随着时间的推移,成员变量、构造函数不断增加
一般情况下,一个类都会有多个构造函数。随着时间的推移,成员变量、构造函数不断增加。为了处理这种情况最方便的办法就是在声明变量的时候进行初始化,而不是在每个构造函数中进行。无论是类成员(静态变量)合适实例变量,我们都应该充分利用初始化器的语法。
C#编程在,一般在声明一个变量的我们会对其进行初始化
1 class Employee
2 {
3 private List<Employee> empList = new List<Employee>();
4 }
不论我们为Employee类添加了多少个构造函数,empList变量都能够被正确的初始化,这是因为
编译器会在所有的构造函数(包括默认构造函数)的最开始位置生成代码来为所以的实例成员变量定义初始化器(进行初始化);所以我们不需要再构造函数中为每一个定义的成员变量添加初始化代码——直接在声明的时候初始化即可。
初始化器可以看做是构造函数中初始化语句的另一种表示。初始化器生成的代码会插入到构造函数代码前面执行。初始化器将在为类型执行调用基类构造函数之前执行,其顺序与类成员变量声明的顺序一样。
C#的初始化器语法是一种最简单的、能够避免类型中存在未初始化变量的解决办法。在狼蚁网站SEO优化的三种情况下应该避免使用初始化器
1.初始化对象为0或null时
因为系统默认的初始化会将会在所有代码执行前把一切都设置成0或者null(值类型和引用类型)。而且这一步的操作是位于很底层的实现,我们也可以直接将对象赋值设置为0或null,显然这是多余的。
2.对同一个变量执行不同的初始化方式
使用初始化语句的一个前提是所有得构造函数都将为该变量设置同样的值。我们看狼蚁网站SEO优化的示例代码
class Employee
{
//声明变量的进行初始化
private List<Employee> empList = new List<Employee>();
public Employee()
{
}
public Employee(int size)
{
empList = new List<Employee>(size);
}
}
在上面的代码中,当我们调用第二个构造函数创建初始化指定大小的泛型集合时 ,实际上时创建了两个List<Employee>。第一个创建后马上变成了垃圾——这是由于初始化器将在所有构造函数之前执行。编译器生成的代码类似于狼蚁网站SEO优化的这段代码
class Employee
{
//声明变量
private List<Employee> empList;
public Employee()
{
empList = new List<Employee>();
}
public Employee(int size)
{
empList = new List<Employee>();
empList = new List<Employee>(size);
}
}
我们可以看到这样做会影响程序的效率,创建了不必要的对象,所以如果需要在不同的构造函数中执行不同的初始化方式时正确的做法应该是不适用初始化器,而是先声明变量,然后在构造函数中进行成员变量的初始化,如下
class Employee
{
//声明变量
private List<Employee> empList;
public Employee()
{
empList = new List<Employee>();
}
public Employee(int size)
{
empList = new List<Employee>(size);
}
}
3.需要进行异常处理
初始化器无法被try语句包裹。所以对象初始化器执行的过程中发生异常都会被传递到对象之外。如果在初始化对象的时候可能会抛出异常时我们应该将这部分代码放到构造函数中,对其进行异常处理。这样才能够实现必要的恢复性代码,以创建类型实例并以更友好的方式处理异常。
小节
成员初始化器是保证类型中成员变量都被初始化的最简单方法——在声明变量时就对其进行初始化,无论调用的是那个构造函数,初始化器都将会在所有构造函数之前执行。这种语法也避免了在添加新的构造函数时遗漏掉重要的初始化代码。所以,如果对于所有的构造函数某个成员变量的初始化值是一样的,那么就应该尽量使用初始化器语法。
C#编程在,一般在声明一个变量的我们会对其进行初始化
代码如下:
1 class Employee
2 {
3 private List<Employee> empList = new List<Employee>();
4 }
不论我们为Employee类添加了多少个构造函数,empList变量都能够被正确的初始化,这是因为
编译器会在所有的构造函数(包括默认构造函数)的最开始位置生成代码来为所以的实例成员变量定义初始化器(进行初始化);所以我们不需要再构造函数中为每一个定义的成员变量添加初始化代码——直接在声明的时候初始化即可。
初始化器可以看做是构造函数中初始化语句的另一种表示。初始化器生成的代码会插入到构造函数代码前面执行。初始化器将在为类型执行调用基类构造函数之前执行,其顺序与类成员变量声明的顺序一样。
C#的初始化器语法是一种最简单的、能够避免类型中存在未初始化变量的解决办法。在狼蚁网站SEO优化的三种情况下应该避免使用初始化器
1.初始化对象为0或null时
因为系统默认的初始化会将会在所有代码执行前把一切都设置成0或者null(值类型和引用类型)。而且这一步的操作是位于很底层的实现,我们也可以直接将对象赋值设置为0或null,显然这是多余的。
2.对同一个变量执行不同的初始化方式
使用初始化语句的一个前提是所有得构造函数都将为该变量设置同样的值。我们看狼蚁网站SEO优化的示例代码
代码如下:
class Employee
{
//声明变量的进行初始化
private List<Employee> empList = new List<Employee>();
public Employee()
{
}
public Employee(int size)
{
empList = new List<Employee>(size);
}
}
在上面的代码中,当我们调用第二个构造函数创建初始化指定大小的泛型集合时 ,实际上时创建了两个List<Employee>。第一个创建后马上变成了垃圾——这是由于初始化器将在所有构造函数之前执行。编译器生成的代码类似于狼蚁网站SEO优化的这段代码
代码如下:
class Employee
{
//声明变量
private List<Employee> empList;
public Employee()
{
empList = new List<Employee>();
}
public Employee(int size)
{
empList = new List<Employee>();
empList = new List<Employee>(size);
}
}
我们可以看到这样做会影响程序的效率,创建了不必要的对象,所以如果需要在不同的构造函数中执行不同的初始化方式时正确的做法应该是不适用初始化器,而是先声明变量,然后在构造函数中进行成员变量的初始化,如下
代码如下:
class Employee
{
//声明变量
private List<Employee> empList;
public Employee()
{
empList = new List<Employee>();
}
public Employee(int size)
{
empList = new List<Employee>(size);
}
}
3.需要进行异常处理
初始化器无法被try语句包裹。所以对象初始化器执行的过程中发生异常都会被传递到对象之外。如果在初始化对象的时候可能会抛出异常时我们应该将这部分代码放到构造函数中,对其进行异常处理。这样才能够实现必要的恢复性代码,以创建类型实例并以更友好的方式处理异常。
小节
成员初始化器是保证类型中成员变量都被初始化的最简单方法——在声明变量时就对其进行初始化,无论调用的是那个构造函数,初始化器都将会在所有构造函数之前执行。这种语法也避免了在添加新的构造函数时遗漏掉重要的初始化代码。所以,如果对于所有的构造函数某个成员变量的初始化值是一样的,那么就应该尽量使用初始化器语法。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程