未使用的属性会导致开销吗

时间:2012-05-09 16:55:15

标签: c# .net properties overhead

假设我们有一个包含大量冗余访问器的生成类。它们只是访问者,它们不是字段。它们不会被称为任何地方。他们只是坐在那里多余和丑陋。

例如:

public class ContrivedExample
{
    public int ThisOneIsUsed { get; set; }

    public int ThisOneIsNeverCalled0 { get { /* Large amounts of logic go here, but is never called. */ } }
    public int ThisOneIsNeverCalled1 { get { /* Large amounts of logic go here, but is never called. */ } }
    public int ThisOneIsNeverCalled2 { get { /* Large amounts of logic go here, but is never called. */ } }
    //...
    public int ThisOneIsNeverCalled99 { get { /* Large amounts of logic go here, but is never called.*/ } }
}

ContrivedExample c = new ContrivedExample() { ThisOneIsUsed = 5; }

我能想到的唯一开销是它会使.DLL更大。我希望运行时间没有处罚。

这会导致任何其他开销吗?任何类型的开销都很小?

1 个答案:

答案 0 :(得分:7)

不太可能有任何可测量的运行时开销。无论如何,因为它是性能问题 - 如果有疑问,请测量您的用法并为您的案例做出决定。

未引用的方法不会被JIT编译,也不会导致直接的运行时开销。

该类的元数据将更大(与您提到的程序集大小一样)。

如果在某些涉及大量反射的代码中使用该类,则可能会产生间接影响,如果代码重复反映在同一个类中,则它本身可能是错误的。