簡體   English   中英

C#性能問題:typeof(MyClass)與this.GetType()

[英]C# performance question: typeof(MyClass) vs. this.GetType()

log4net配置手冊的第一個示例中,作者使用typeof(MyApp)來獲取包含類MyApp的類型。 有沒有理由不使用this.GetType() ,性能方面? 因為在我看來,當復制到另一個類時,這個this.GetType()比潛在的復制粘貼錯誤更安全。

typeof(Foo)是一種靜態類型查找; 本質上它發生在編譯時,所以你只得到明確命名的類型。

GetType()是動態類型查找; 它是一個在運行時被調用的虛方法,即使你使用多態也會給你確切的類型。 所以它在理論上“慢”,但是它給你的東西是你無法從typeof(T) 如果您的設計需要一個或另一個,速度不會成為一個因素。

除了性能問題之外,在提供的示例中, GetType甚至不是一個選項,因為它是一個實例方法; 它不能從字段初始化程序中調用。 在任何情況下,由於意圖是從靜態“上下文”初始化靜態字段,邏輯上this引用不可用 - 因此沿着靜態構造函數路由下去也無助於允許GetType

// Can't use GetType() - the this reference is not available.
private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM