1

System.Runtime.CompilerServices.DiscardableAttributeプロトタイプコンパイラであっても、実用的な使用法を見つけることができません。洞察はありますか?ありがとう。

4

1 に答える 1

6

ドキュメントに記載されているよりも具体的な例を挙げると、(静的クラスから) 特別な修飾子を使用してマークされた静的メソッド呼び出しのインライン化をサポートする言語を使用できます。

static class Bar {
  static inline void Foo(int a) { // Note fictional 'inline' modifier
    return a + 10;
  }
}

このようなクラスがある場合、実際にはコードの他の部分から参照されません。あなたが書くとき:

int y = Bar.Foo(x);

コンパイラは次のようにコンパイルします。

int y = x + 10;

Bar他のプロジェクトからアセンブリを参照する場合は、それを表示する必要があるため、コンパイルされたコードでの定義を保持する必要があります (その後、Fooメソッドを呼び出すと、コンパイラはそのアセンブリからコンパイルされた IL を取得するだけです)。

ただし、このクラスBarは実行時に使用されることはありません (コードを保持するためだけに存在し、実際に実行するためではありません)。としてマークするDiscardableと、アセンブリのネイティブ コードを生成するときに JIT がスキップする可能性があると思います (クラスが使用されることはないため)。

于 2011-02-18T18:20:01.180 に答える