CTOR的含义是什么?

274

在许多C#文件中,我看到了命名为CTOR或ctor的区域标记(?). Ctor是什么意思?为什么这样的区域被称为Ctor?

4个回答

367

这只是“constructor”的简写,IL 中的构造函数也被称为它。例如,打开 Reflector 并查看类型,你会看到称为各种构造函数的成员.ctor


5
为什么它被称为 .ctor?(.)点号前面的意思是什么? - isuruceanu
2
@isuruceanu:我猜这是为了显示它是一个保留名称。 - Jon Skeet
1
怎么说呢?ctor和Skeet-er押韵吗?是你缩写的吗?还是应该读作“cutter”? - user652038
12
@Jessy:我很少听到它的发音,但我会发成“see-tor”。 - Jon Skeet
8
IL 中以 "." 开头的内容均为元数据。 - Jude
显示剩余5条评论

50

通常情况下,这个区域应该包含类的构造函数。


2
“should contain”这个术语是指一个 .ctor 不一定总是引用一个构造函数吗?还是仅仅表示它不总是引用一个类的构造函数(因为它也可以引用一个结构体的构造函数)? - cogumel0

45

再详细解释一下,构造函数分为两种:实例初始化器(.ctor)和类型初始化器(.cctor)。编译下面的代码,并在ildasm.exe中查看IL代码。您将注意到静态字段'b'将通过.cctor()进行初始化,而实例字段将通过.ctor()进行初始化。

internal sealed class CtorExplorer
{
   protected int a = 0;
   protected static int b = 0;
}

18

输入"ctor"并按两次TAB键,这将自动添加默认构造函数。


在使用VS2013(并且使用R#2016.1)时,我只需要按一次Tab键。不确定其他版本的VS / R#。 - ro͢binmckenzie
17
这不是对问题的回答。 - Malfist
13
但一个有趣的事情,不是答案,所以被取消了踩。 - Sнаđошƒаӽ
1
不是答案,但仍然是一个有趣的事实,相信它值得点赞; :) - Cylian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接