我有两个变量CarsSelected和PlanesSelected. 如果有人设置了其中一个,我希望将另一个变量设置为相反的值,因此如果一个为真,另一个必须为假,反之亦然。因此,两个变量最终总是不同的。我的问题是我的代码infinite loop在更改任何值时进入。如何解决?
public class MyClass
{
private bool _carsSelected;
private bool _planesSelected;
public bool CarsSelected
{
get => _carsSelected;
set
{
_carsSelected= value;
PlanesSelected= !_carsSelected;
}
}
public bool PlanesSelected
{
get => _planesSelected;
set
{
_planesSelected= value;
CarsSelected= !_planesSelected;
}
}
public MyClass()
{
CarsSelected= false;
PlanesSelected= false;
}
}
Run Code Online (Sandbox Code Playgroud)
您只需要一个支持字段(注意属性中的!运算符PlanesSelected):
public class MyClass
{
private bool _carsSelected;
public bool CarsSelected
{
get => _carsSelected;
set
{
_carsSelected= value;
}
}
public bool PlanesSelected
{
get => !_carsSelected;
set
{
_carsSelected = !value;
}
}
public MyClass()
{
CarsSelected= false;
PlanesSelected= false;
}
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以CarsSelected通过这种方法使用 auto 属性。但实际上,这看起来更像是您需要一个枚举,而不是两个布尔值:
public enum TranportDevice
{
Car,
Plane
}
public class MyClass
{
public TransportDevice SelectedTransportDevice {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |