如何在没有迭代的情况下基于int计数器设置多个bool标志?

Voo*_*ild 0 c#

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)

有没有更好的方法来设置标志而不是迭代计数器?

Jon*_*eet 5

你真的需要拥有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属性,在显示的代码中.

如果您可以提供更多背景信息,那么帮助您会更容易.