System.Runtime.CompilerServices.DiscardableAttribute
即使对于原型编译器,我也找不到. 有什么见解吗?谢谢。
问问题
194 次
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 回答