C# や VB.NET ではできないことを MSIL では何ができますか? [closed] 質問する

C# や VB.NET ではできないことを MSIL では何ができますか? [closed] 質問する

.NET 言語で記述されたすべてのコードは MSIL にコンパイルされますが、MSIL を直接使用してのみ実行できる特定のタスクや操作はありますか?

C#、VB.NET、F#、j#、またはその他の .NET 言語よりも、MSIL で作業を簡単に実行できるようにしましょう。

これまでのところ、次のとおりです。

  1. 末尾再帰
  2. ジェネリック共変性/反変性 (C# 4 および VB 10 で許可)
  3. 戻り値の型のみが異なるオーバーロード
  4. アクセス修飾子を上書きする
  5. System.Object から継承できないクラスがある
  6. フィルターされた例外 (VB および C# 6 で許可)
  7. 現在の静的クラス タイプの仮想メソッドを呼び出します。
  8. 値型のボックス化されたバージョンを取得します。
  9. トライ/フォールトを実行します。
  10. 禁止されている名前の使用。
  11. 値型用のパラメータなしのコンストラクタを独自に定義する
  12. 要素を使用してイベントを定義しますraise
  13. 一部の変換は CLR では許可されますが、C# では許可されません。
  14. main()メソッドを として作成します.entrypoint
  15. ネイティブintおよびネイティブunsigned intタイプを直接操作します。
  16. 一時ポインターで遊ぶ
  17. MethodBodyItem の emittingbyte ディレクティブ
  18. System.Exception 以外の型をスローおよびキャッチする
  19. 列挙型の継承 (未検証)
  20. バイト配列を (4 倍小さい) int 配列として扱うことができます。
  21. フィールド/メソッド/プロパティ/イベントにはすべて同じ名前を付けることができます (未検証)。
  22. 独自の catch ブロックから try ブロックに分岐することができます。
  23. famandassemアクセス指定子(protected internalis fam)にアクセスできますまたはassem ですが、現在は C# 7.2 および VB 15.5 でも許可されています)
  24. <Module>グローバル関数またはモジュール初期化子を定義するためのクラスへの直接アクセス。
  25. ゼロ境界のない1ベースの配列を作成して使用する
  26. オープンインスタンスデリゲートとクローズドスタティックデリゲート、およびゲッター/セッターのデリゲートを作成する
  27. 一時変数を使用せずに2つの値を交換する
  28. 任意の名前で明示的なインターフェース実装、および 2 つのインターフェース関数を 1 つに実装する (VB で実行可能)
  29. 宣言( Cのvtfixupに相当)extern
  30. 任意modoptまたはmodreq

ベストアンサー1

MSILでは、戻り値の型のみが異なるオーバーロードが許可されます。

call void [mscorlib]System.Console::Write(string)

または

callvirt int32 ...

おすすめ記事