95

ildasm と C# プログラムの使用例

static void Main(string[] args)
{

}

与えます:

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       2 (0x2)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ret
} // end of method Program::Main

hidebysig コンストラクトは何をしますか?

4

3 に答える 3

15

THE SKEETの回答によると、さらに、JavaとC#では、クラスのクライアントが、基本クラスのメソッドを含め、同じ名前のメソッドを呼び出すことができるためです。C++ はそうではありません: 派生クラスが基本クラスのメソッドと同じ名前のメソッドを 1 つでも定義している場合、クライアントは、たとえ同じ引数をとらなくても、基本クラスのメソッドを直接呼び出すことはできません。そのため、オーバーロードに対する両方のアプローチをサポートするために、この機能が CIL に組み込まれました。

C++ では、ディレクティブを使用して基本クラスからオーバーロードの名前付きセットを効果的にインポートできるusingため、それらはそのメソッド名の「オーバーロード セット」の一部になります。

于 2009-03-17T23:59:35.073 に答える