gpt4 book ai didi

c# - 属性(property)决定论

转载 作者:太空狗 更新时间:2023-10-29 20:00:37 25 4
gpt4 key购买 nike

在 C# 中有什么方法可以将属性标记为确定性的?

我问的原因是我经常发现自己声明一个局部变量并将属性读入其中,而不是多次访问该属性。

有什么方法可以将属性修饰为确定性的,以便编译器可以优化对该属性的多次访问?我猜测在这种情况下,该类需要是不可变的,并且需要这样装饰。

这是存在的东西还是我在抓救命稻草?

最佳答案

如果属性很简单,比如隐式属性:

public int X { get; set; }

或者从局部变量读取:

public int X { get { return _x; } }

然后编译器将优化代码,以便多次访问该属性与将属性放入变量并访问它之间没有区别。

我通过比较 1 亿次迭代访问属性 10 次和将属性复制到变量并访问 10 次来验证这一点,根本没有可测量的差异。

通常,属性应该是轻量级的,这样您就不必在每次访问它时都进行繁重的处理。如果属性值的获取成本很高,则该类应在内部缓存该值,以便读取属性只会在第一次进行成本高昂的操作(延迟加载模式)。

如果一个属性每次获取的成本都很高,那么它根本不应该是一个属性,而应该是一个 getter 方法。

关于c# - 属性(property)决定论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com