bool类型的字段数组

时间:2012-12-05 19:57:47

标签: c#

我有4个bool类型的字段:

private bool f1;
public bool F1 {
get{return this.f1;}
set
 {
 this.f1=value;
 onPropertyChanged("F1");
 }
}

private bool f2;
public bool F2 {
get{return this.f2;}
set
 {
  this.f2=value;
  onPropertyChanged("F2");
 }
}
private bool f3;
public bool F3 {
get{return this.f3;}
set
 {
 this.f3=value;
 onPropertyChanged("F3");
 }
}
private bool f4;
public bool F4 {
get{return this.f4;}
set
 {
  this.f4=value;
  onPropertyChanged("F4");
 }
}

其中只有一个是真的。我想要一种在for循环中设置它们的方法。我尝试了以下方法:

bool[] myFields =
{
    F1,F2,F3,F4
};

int Answer = 1; 
for (int index = 0; index < myFields.Length; index++)
{
    if(index == Answer)
    {
        myFields[index] = true;
    }
    else
    {
        myFields[index] = false;
    }
}

但这只会将myFields数组中的值设置为true / false,而不是属性F2本身。关于如何使这个更好/工作的任何想法?

2 个答案:

答案 0 :(得分:4)

我认为你不想在这里使用自动属性。怎么样:

public bool F1 {
    get { return myFields[0]; }
    set { myFields[0] = value; }
}
etc... 

顺便提一下,您的for循环可以简化为:

for (int index = 0; index < myFields.Length; index++) {
     myFields[index] = (index == Answer);
}

答案 1 :(得分:4)

使用enum可以更好地处理这个问题。这样,您可以允许值F1,F2,F3,F4(和“无”,如果适用)。这就是看起来的样子:

public enum FValue { None, F1, F2, F3, F4 }

public class Foo
{
    public FValue Value { get; set; }
}