C#属性可以让程序运行得更慢吗?

Geo*_*kov 1 c# getter setter properties

我担心人们总是使用getter-setter模式:

    public int MyVariable { get; private set; }

    public void SomeFunction(){
        MyVariable = 10;
    }
Run Code Online (Sandbox Code Playgroud)

据我所知,编译为:

    private int myVariable;

    public int GetMyVariable(){
        return myVariable;
    }

    private void SetMyVariable(int value){
        myVariable = value;
    }

    public void SomeFunction()
    {
        SetMyVariable(10);
    }
Run Code Online (Sandbox Code Playgroud)

如果频繁使用,它不会影响程序的性能吗?这样做是不是更好:

    private int myVariable;
    public int MyVariable { get {return myVariable; } }

    public void SomeFunction(){
        myVariable = 10;
    }
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

首先,这种类型的优化通常会适得其反 - 尝试优化单个方法调用通常对任何现实世界都没有影响,测量性能.您可能最好将注意力集中在优化您在更高级别使用的算法上,而不是微观优化所使用的语言功能.

如果频繁使用,它不会影响程序的性能吗?这样做是不是更好:

不会.一旦编译,这将是有效的.

此外,在发布版本中,JIT编译器通常会完全优化get和set方法,完全内联它们.这将有效地使其执行与使用公共字段完全相同,并且具有与直接成员访问相同的性能.