我有一个 setter 需要用旧值处理新值。 但是,如果该值 < 0.1,则需要将其设置为 0.1。
我可以基于 value 关键字创建一个 newValue 变量,但这看起来有点浪费,而且在处理部分中,newValue 是什么并不是很明显。
同样,如果我查看代码,我希望“值”是传递给 setter 的东西,而不是被操纵的东西。
最好的写法是什么,是使用 newValue 还是 value 关键字?
public double NumberValue
{
get => _numberValue;
set
{
if (value < 0.1) value = 0.1;
var multiplier = value / _numberValue;
foreach (var item in Items)
{
item.SomeValue = item.SomeValue * multiplier;
}
_numberValue = value;
}
}
我的方法是这样结束的,这是一个更简洁的解决方案
public double NumberValue
{
get { return _numberValue; }
set
{
var newValue = Math.Max(0.1, value);
ProcessValues(newValue);
_numberValue = newValue;
}
}
最佳答案
这是我会做的:
public double NumberValue
{
get => _numberValue;
set
{
_numberValue = value < 0.1 ? 0.1 : value;
}
}
@Matthew 在评论中建议的另一种方法是使用 Math.Max
:
public double NumberValue
{
get => _numberValue;
set
{
_numberValue = Math.Max(0.1, value);
}
}
关于c# - 在 setter 中更改 value 关键字是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55064933/