您的位置:首页 > Web前端

Effective C# Item14: Utilize Constructor Chaining

2006-10-13 09:08 351 查看
Effective C# Item14: Utilize Constructor Chaining

当我们写类的构造函数的时候经常会有许多种重载版本,它们完成的工作有一部分是重复的。许多开发者往往是先写第一个构造函数,然后拷贝粘贴它们到其他的构造函数当中去。我们应当停止这种做法。当我们发现许多重载的构造函数都包含有一些普遍的算法时,我们应当将这些逻辑集合到构造函数中,形成构造函数链。通过这种方法我们可以避免代码重复,生成更加高效的对象代码。

构造函数初始化允许一个构造函数调用其他构造函数。下面的例子展示了一个简单的应用。

public class MyClass
public class MyClass
public class MyClass
public class MyClass
public class MyClass
.method public hidebysig specialname rtspecialname
instance void .ctor(int32 initialCount) cil managed
.method public hidebysig specialname rtspecialname
instance void .ctor(int32 initialCount,
string name) cil managed

使用构造函数调用一般函数方法生成的IL:
这是MyClass(int initialCount, string name),注意IL_0001

.method public hidebysig specialname rtspecialname
instance void .ctor(int32 initialCount,
string name) cil managed
.method private hidebysig instance void commonConstructor(int32 initialCount,
string name) cil managed

可以看到当我们使用构造函数链调用构造函数的重载时并不会马上生成类型的对象,这个动作是在基础构造器中完成的。而当我们使用构造函数调用一般函数时,会在构造函数结束前生成类型的对象,然后再调用函数。这样不但会使中间代码臃肿,还会降低执行的效率。

回到目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: