Ily*_*gan 38 .net c# performance
在log4net配置手册的第一个示例中,作者使用typeof(MyApp)获取包含类的类型MyApp.this.GetType()性能方面有没有理由不使用?因为在我看来,this.GetType()在复制到另一个类时,潜在的复制粘贴错误会更加安全.
Mik*_*keP 88
typeof(Foo)是一个静态类型查找; 本质上它发生在编译时,所以你只得到明确命名的类型.
GetType()是动态类型查找; 它是一个在运行时被调用的虚方法,即使你使用多态也会给你确切的类型.所以从理论上来说它"慢",但它给你一些你无法得到的东西typeof(T).如果您的设计需要一个或另一个,速度不会成为一个因素.
Ani*_*Ani 15
除了性能问题之外,在提供的示例中,GetType甚至不是一个选项,因为它是一个实例方法; 它不能从字段初始化程序调用.在任何情况下,由于意图是从静态"上下文" 初始化静态字段,逻辑上this引用不可用 - 因此沿着静态构造函数路由下去也无助于允许GetType.
// Can't use GetType() - the this reference is not available.
private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17200 次 |
| 最近记录: |