我有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本身。关于如何使这个更好/工作的任何想法?
答案 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; }
}