8

友人からアプリケーションを開発してもらいます。次に、コードで次のような紛らわしいコードを取得しました。

public someNameHere()
{
   base..ctor();
} 

まあ、私はこのようなアプリケーションを持ったことはありません。これについては説明が必要です

base..ctor();

私はグーグルで検索しましたが、私を満足させる答えが見つかりません。あなたが私に与えてくれたどんな助けにも感謝します。

4

2 に答える 2

20

.ctor()コンストラクターが使用する内部名です。C# ではそのように使用されず、コンパイルされません。より一般的にbase..ctor()は、次のようなことを行うときにコンパイラによってのみ使用されます。

public class Foo : Bar {
    public Foo(string s) : base(s) {...} 
    public Foo() {...} // has an implicit :base()
}

私が見た唯一の違いは、(リフレクターなどを介して) C# コンパイラーが行う方法とは異なる順序で構築コードを行う非 C# IL を逆コンパイルするときです。したがって、「純粋な」C# では表現できません。 . 生の IL (および C++ などから) では、開始時だけでなく、コンストラクターの任意の時点でベース コンストラクターを呼び出すことができます。

于 2013-04-23T08:17:38.363 に答える
3

基本クラスのデフォルトのパラメーターなしのコンストラクターにする必要があります。Elaborating.ctor()は、C# をコンパイルして自動的に生成されるコンストラクターのエイリアスです。したがって、書き込みは基本クラスbase..ctor()のメソッドを参照しています。.ctor()

于 2013-04-23T08:14:54.947 に答える