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