有什么区别以及对代码的影响?
关于性能和限制,什么更适合?
新属性:
- [调用文件路径属性]
- [CallerMemberName]
- [来电号码]
现在它们在 .NET 4 中也可用(它很容易开发并且看起来很神奇)。它们的值是在运行时编译还是解析的?
最佳答案
首先,MethodBase.GetCurrentMethod()
返回当前方法,而您可以使用[CallerMemberName]
等来传入当前方法中有关调用方法的一些信息。
前者是在运行时使用反射评估的,因此相对较慢,而后者是在编译时处理的,本质上是无操作性能明智的。我实际上已经在测试中验证了这一点。每次反射都会花费大约 20 微秒的时间,如果经常调用,这可能会非常重要,而 [Caller...]
属性不会产生可衡量的损失。
关于c# - MethodBase.GetCurrentMethod().Name 与 [CallerMemberName],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626059/