是否更快地访问只读成员?

时间:2012-09-03 15:49:01

标签: .net clr

尝试读取私有“readonly”实例成员变量vs私有实例成员变量时,速度是否存在差异?

更新

这个问题的目的是为了更好地理解和理论目的。

2 个答案:

答案 0 :(得分:1)

没有性能差异。改为'const'会获得一些性能。所有这一切都在这篇精彩的文章中精美地描述;

http://www.dotnetperls.com/readonly

答案 1 :(得分:1)

假设您有以下代码:

void Main()
{
    Test t = new Test();
    t.Check();
}

public class Test
{
    private readonly int  num = 10;
    private int num1 = 50;

    public void Check()
    {
        int a = num1;
        int b = num;
    }
}

现在生成的MSIL代码如下

IL_0001:  newobj      UserQuery+Test..ctor
IL_0006:  stloc.0     
IL_0007:  ldloc.0     
IL_0008:  callvirt    UserQuery+Test.Check

Test.Check:
IL_0000:  nop         
IL_0001:  ldarg.0     
IL_0002:  ldfld       UserQuery+Test.num1
IL_0007:  stloc.0     
IL_0008:  ldarg.0     
IL_0009:  ldfld       UserQuery+Test.num
IL_000E:  stloc.1     
IL_000F:  ret         

Test..ctor:
IL_0000:  ldarg.0     
IL_0001:  ldc.i4.s    0A 
IL_0003:  stfld       UserQuery+Test.num
IL_0008:  ldarg.0     
IL_0009:  ldc.i4.s    32 
IL_000B:  stfld       UserQuery+Test.num1
IL_0010:  ldarg.0     
IL_0011:  call        System.Object..ctor
IL_0016:  nop         
IL_0017:  ret         

所以我看到readonly是一个特定于语言的关键词,用于表达编程概念 编译器在构建代码时强制执行只读规则 从生成的代码的角度来看,没有区别。 -