在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
编写构造函数通常是一件重复性的劳动,我们经常需要在不同声明形式的构造函数中,对同一个成员变量进行同样的初始化操作,为了完成这个任务,通常有以下三种方式。
首先,我们要抛弃上述第1种方案,因为重复代码是一种非常明显的代码“坏味道”;对于第2种方案,从消除重复代码的角度来看,是没有问题的,但是产生的目标代码的效率比较低,编译器会在每个构造函数上添加一些代码来执行我们所需要的函数逻辑,它会为每个成员变量添加变量初始化器,并且会调用基类的构造器;而第3种方案,是最简单、最有效率的方式。 我们可以这样使用构造器链。
代码
对于C#对象初始化过程中每一步的顺序,如下。
当创建一个对象时,C#编译器会确保其中的所有变量以某种方式被正确的初始化。至少,我们可以确保创建对象实例时,其所有的内存都设置为0。静态成员和实例成员都遵循这一规则。但我们的目标是确保将所有的变量按照我们期望的方式进行初始化,并且只初始化一次。 我们应该使用变量初始化器来初始化简单的资源。如果需要复杂的逻辑,我们就需要使用构造函数来执行初始化,但这时候我们最好将一些共享的逻辑放在一些构造函数中,然后使用构造函数初始化器来调用它们,从而将代码重复降到最低。 |
请发表评论