CTORの意味は何ですか?


221

多くのC#ファイルで、CTORまたはctorという名前の領域タグ(?)を保存します。俳優の意味は何ですか?なぜそのような領域がctorと呼ばれるのですか?

回答:


305

これは単に「コンストラクタ」の省略形であり、ILでもコンストラクタが呼び出されます。たとえば、Reflectorを開いて型を確認すると.ctor、さまざまなコンストラクターに対して呼び出されたメンバーが表示されます。


3
なぜ.ctorと呼ばれるのですか?前にあるドット(。)の意味は何ですか?
isuruceanu

@isuruceanu:予約された名前であることを示すためだと思います。ただの推測です。
Jon Skeet、

xxx。#。ctor()はどうですか?、FxCopの実行に失敗します。stackoverflow.com/questions/17024149/...
アンドレアス・ブルムクヴィスト

8
@ジェシー:私はめったに聞いたことがありませんが、「シーター」と発音します。
Jon Skeet、2013年

5
@isuruceanu「。」で始まるものすべて ILではメタデータです。
ジュード

45

通常、この領域にはクラスのコンストラクターが含まれている必要があります


2
「含むべき」-.ctorが必ずしもコンストラクタを参照するとは限らないという意味ですか?それとも、それがクラスのコンストラクタを常に参照するとは限らない(たとえば、構造体を参照する可能性があるため)?
cogumel0 14

@ cogumel0というか"含まれている必要がありますS ;-)"
Sнаđошƒаӽ

36

もう少し拡張すると、インスタンス初期化子(.ctor)とタイプ初期化子(.cctor)の2種類のコンストラクターがあります。以下のコードをビルドし、ildasm.exeのILコードを調べます。静的フィールド 'b'は.cctor()を介して初期化され、インスタンスフィールドは.ctor()を介して初期化されることに気づくでしょう。

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

14

「ctor」と入力してTabキーを2回押すと、デフォルトのコンストラクタが自動的に追加されます


VS2013(およびR#2016.1を使用)では、Tabキーを1回押すだけです。わからないVSの他のバージョンについて/ Rの#
ro͢binmckenzie

13
これは質問に対する答えではありません。
Malfist

9
答えではないので、反対票を投じました。しかし、知っておくと面白いことなので、投票は行われません。:-)
Sнаđошƒаӽ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.