boolean根据int计数器属性设置属性的最佳方法是什么?
所以,假设我有10个布尔属性
public bool IsBool1 {get;set;}
....
public bool IsBool10 {get;set;}
Run Code Online (Sandbox Code Playgroud)
和一个int计数器(永远不会有大于10的值)
public int Counter {get;set;}
Run Code Online (Sandbox Code Playgroud)
最后,我有一个设置标志的方法
private void SetFlagsByCounter(int counter)
{
if (counter >= 1) { IsBool1 = true; }
.....
if (counter >= 10) { IsBool10 = true; }
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来设置标志而不是迭代计数器?
你真的需要拥有10个自动属性吗?你有10个属性只能根据计数器返回一个值吗?(你首先需要10个房产吗?)
例如:
public class Foo
{
public int Counter { get; set; }
public bool IsBool1 { get { return Counter >= 1; } }
public bool IsBool2 { get { return Counter >= 2; } }
public bool IsBool3 { get { return Counter >= 3; } }
public bool IsBool4 { get { return Counter >= 4; } }
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,这与您的原始版本有三种不同:
SetFlagsByCounter方法,只有财产SetFlagsByCounter(10)然后SetFlagsByCounter(1),那么IsBool5(等)仍然会返回true,因为你从未清除过这些标志.SetFlagsByCounter根本没有使用(或更改)Counter属性,在显示的代码中.如果您可以提供更多背景信息,那么帮助您会更容易.