0

プライベート「読み取り専用」インスタンス メンバー変数とプライベート インスタンス メンバー変数を読み込もうとすると、速度に違いはありますか?

アップデート

この質問の意図は、理解を深めることと、理論的な目的のためです。

4

2 に答える 2

1

性能差はありません。ただし、「const」に変更すると、パフォーマンスが向上します。このすべては、この素晴らしい記事で精巧に説明されています。

http://www.dotnetperls.com/readonly

于 2012-09-03T16:01:24.700 に答える
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 は、プログラミングの概念を表現するために使用される言語固有のキーワードであることがわかります。
読み取り専用ルールを適用するのは、コードをビルドするときのコンパイラです。
生成されたコードの観点からは、違いはありません。–</p>

于 2012-09-03T16:08:54.887 に答える