c# - 属性的值应该用方法更新还是在 getter 中确定?

标签 c# getter

只是一个简单的问题,以便了解使用每次需要更改值时调用的方法来更新属性值或仅在 getter 中执行此操作之间是否有更好的做法。

例如在这之间:

        public double Balance { get; private set; }

        private void UpdateBalance()
        {
            if (Payments.IsNullOrEmpty())
            {
                Balance = 0;
            }
            else
            {
                double amountSum = 0;
                foreach (Payment payment in Payments)
                {
                    amountSum += payment.Amount;
                }
                Balance = amountSum;
            }
        }

还有这个:

        public double OtherBalance
        {
            get
            {
                if (Payments.IsNullOrEmpty())
                    return  0;
                double amountSum = 0;
                foreach (Payment payment in Payments)
                {
                    amountSum += payment.Amount;
                }
                return amountSum;
            }
        }

我能想到的唯一区别是性能,因为在第一种情况下,每次我们尝试获取属性的值时,getter 都会遍历整个列表。不过,您无需担心每次执行可能影响属性值的更改(如第二个选项中所示)时都会调用 Update 方法。这种差异真的很重要吗?除此之外,是否有任何理由选择一个选项而不是另一个选项?

提前致谢

最佳答案

在第一种读取余额的方法中,您应该再次调用getter,而在第二种方法中,根本没有余额,我个人更喜欢第二种方法,因为它在调用时生成值,因此您可以确保它始终更新,并且不需要调用函数然后读取值,因此它更干净并且更可维护

关于c# - 属性的值应该用方法更新还是在 getter 中确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091242/

相关文章:

c# - 数据网格 WPF 中的计算列

java - 为什么在 Constructor 和 Setters 中使用 "this"关键字?

javascript - 限制对 JavaScript 变量的访问

c# - 动态地与不同的类一起工作

java - 如何一次性定义所有的 getter 和 setter?

java - 无法使用 getter 访问变量

c++ - 在一个类中调用另一个类的getter

c# - X文档解析错误

c# - 如何在mvc 4的web.config文件中添加程序集

c# - 使用 Resharper 更改类中的所有属性以具有支持属性