.NET/C#中的放宽式异常是什么?

4

我在Reflector中查看程序集时发现了CompilationRelaxations属性。 这个链接 表示该属性指定了:

优化器被授予更多宽松异常处理的自由度。

什么是宽松异常,编译器在给予它们“更多自由度”时会做什么。

1个回答

4

这样可以使编译器在优化时更加灵活。

详见CompilationRelaxations枚举的帮助文档

--- 编辑 ---

目前,该属性使用单个枚举,只有1个选项:NoStringInterning

根据MSDN的帮助文档,这样做:

将程序集标记为不需要字符串文字内部化。
在应用程序域中,公共语言运行时为每个唯一的字符串文字创建一个字符串对象,而不是制作多个副本。 这种被称为字符串内部化的行为,内部需要构建消耗内存资源的辅助表。

虽然该属性被指定使用一个枚举,但以后可以轻松添加更多选项。目前,这是通过该程序集属性允许的唯一优化。


哎呀,这个枚举只有一个取值:NoStringInterning - Jonathan Parker
目前,该属性只有一种选项 :) 他们使用枚举来保持兼容性并留有扩展的余地。 - Reed Copsey
为什么编译器会自动在程序集上设置 NoStringInterning?我没有手动设置过。 - Jonathan Parker
编译器不会自动执行此操作,除非您明确设置此属性。如果您设置了它,编译器可以选择(但不保证)禁用字符串池化。 - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接