我想在c#中创建一个具有配对值的结构,其中如果设置了一个值,则另一个值会自动相反地设置.例如,如果我有一个像:
{
public bool Courageous;
public bool Cowardly;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果两个中的一个被设置,另一个被"取消设置".有没有相关的零和变量?
不要直接公开属性,而是使用属性访问器根据需要改变私有字段:
{
private bool _courageous;
private bool _cowardly;
public bool Courageous
{
get { return _courageous; }
set
{
_courageous = value;
_cowardly = !value;
}
}
public bool Cowardly
{
get { return _cowardly; }
set
{
_cowardly = value;
_courageous = !value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者,在这种情况下更简单,因为你只有两个bools,它们总是另一个的逻辑反转:
{
public bool Courageous{ get; set; }
public bool Cowardly { get { return !Courageous; } set { Courageous = !value; } }
}
Run Code Online (Sandbox Code Playgroud)
您的具体情况将决定您是否可以使用公共支持字段并在一个(或其他)属性的公开属性中执行变异,或者需要具有单独的支持字段和更复杂的访问者.
但一般来说,属性和属性访问器可用于制造您需要的几乎任何此类行为.