1

タイプ bool の 4 つのフィールドがあります。

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");
 }
}

それらのうちの 1 つだけが true になります。それらを 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 に設定するだけで、Property F2 自体には設定しません。これをより良く/機能させる方法についてのアイデアはありますか?

4

2 に答える 2

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);
}
于 2012-12-05T20:01:52.993 に答える
4

これはenum. このようにして、値 F1、F2、F3、F4 (および該当する場合は「なし」) を許可できます。これは次のようになります。

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

public class Foo
{
    public FValue Value { get; set; }
}
于 2012-12-05T20:15:03.753 に答える