【发布时间】:2013-07-11 15:41:49
【问题描述】:
有什么区别以及对代码的影响?
关于性能和限制,什么更适合?
新属性:
- [调用者文件路径属性]
- [CallerMemberName]
- [来电号码]
今天它们也可以在 .NET 4 中使用(它易于开发并且看起来很神奇)。它们的值是在运行时编译或解析的?
【问题讨论】:
-
你需要用它们做什么?如果它们用于在异常期间报告堆栈跟踪信息,则性能应该有些无关紧要。如果您使用它们来检测整个应用程序,那就完全是另一回事了。
-
它们被编译在:"Caller Info values are emitted as literals into the Intermediate Language (IL) at compile time." 编辑:性能方面,我从未对它们进行基准测试或大量使用它们,但我怀疑它应该相当小,因为大部分工作都是在编译时间。 (虽然不确定性能关键或超级频繁命中的代码)使用基于反射的方法(如
StackTrace或MethodBase.GetCurrentMethod())可能容易受到方法内联或混淆的影响。
标签: c# .net reflection compiler-services