2011-01-06 15 views
159

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

答えて

218

「コンストラクタ」の省略形です。コンストラクタもILで呼び出されます。たとえば、Reflectorを開いてタイプを見ると、さまざまなコンストラクタに対して.ctorというメンバーが表示されます。インスタンス初期化子(.ctor)、タイプ初期化子(.cctor):

+2

なぜそれが.ctorですか?正面にドット(。)の意味は何ですか? – isuruceanu

+0

@isuruceanu:それはそれが予約された名前であることを示すことだと思う。しかし、ちょうど推測する。 –

+0

xxx。#。ctor()はどうですか?私のFxCopの実行に失敗します。 http://stackoverflow.com/questions/17024149/fxcop-exception-bad-method-type-parameter-in-position-0 –

41

通常、この領域はもう少しを展開するには、クラス

+1

に "含まれている必要があります" (構造体を参照することができるため)必ずしもクラスのコンストラクタを参照しているとは限りませんか? – cogumel0

+0

@ cogumel0あるいは、 "必ず** s **を含むべきです" ;-) –

28

のコンストラクタが含まれている必要があり、コンストラクタの2種類があります。以下のコードを作成し、ildasm.exeでILコードを調べます。あなたは、静的フィールド「B」は、インスタンスフィールドは.ctorによって初期化されます一方.cctor()()

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

タイプ「CTOR」によって初期化されますことに気づくと二回このTABキーを押しますデフォルトのコンストラクタを自動的に追加します

+0

VS2013では(そしてR#2016.1を使用して)タブを1回押すだけで済みます。 VS/Rの他のバージョンについてはわからない# –

+5

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

+2

答えはありませんので、落札してください。しかし、面白いことを知っているので、undownvoted。 :-) –