我想要实现的是确保我的属性始终为 0 或更大。类型并不重要。
可以说:
var x = 3;
var y = 5;
Run Code Online (Sandbox Code Playgroud)
x之后x -= y应该是 0。
目前正在使用这种方式,并且想知道是否有一种没有成员变量的方法:
public int Coins
{
get { return Math.Max(0, _coins); }
set { _coins = value; }
}
Run Code Online (Sandbox Code Playgroud)
也无法找到 uint 的方法。
所有建议均表示赞赏。
uint x = 3;
uint y = 5;
Run Code Online (Sandbox Code Playgroud)
预期 x 之后为 0 x -= y,但收到最大单位。
如果您实现get和set与自动属性不同,那么您始终需要声明一个私有成员来存储该值。这是设计使然。
即使您使用自动属性并且不声明私有成员,编译器也会这样做。您只是看到更少的代码,但计算机看不到任何差异。
无论如何,我建议做 1 个小改变:
public int Coins
{
get { return _coins; }
set { _coins = Math.Max(0, value); }
}
Run Code Online (Sandbox Code Playgroud)
这样,“错误”的 _coins 值就不会被存储。但当然,它基于您的业务逻辑,因此建议的代码可能不适合您