私はこれが馬鹿だと知っています。しかし、私はここで間違って何かをしなければならない。リスト内の構造体の状態を変更できないのはなぜですか?
言って、その後どこか
struct lala
{
private bool state1;
public lala(bool state1)
{
this.state1 = state1;
}
public void SetState1ToTrue()
{
this.state1 = true;
}
public bool GetState1()
{
return this.state1;
}
}
...
List<lala> lalas = new List<lala>();
lalas.Add(new lala(false));
lalas.Add(new lala(false));
lalas[0].SetState1ToTrue();
// Why is it False???
Console.WriteLine(lalas[0].GetState1());
はそれを変更することを除き、これに回避策があります、ひどいunelegantと無駄に見えた
List<lala> lalas = new List<lala>();
lalas.Add(new lala(false));
lalas.Add(new lala(false));
lala newLala = lalas[0];
newLala.SetState1ToTrue();
lalas[0] = newLala;
// It's True, finally.
Console.WriteLine(lalas[0].GetState1());
2行のコード。もしLinq-ishやFunctional Programming-ishのようなものがあったら、1行のコードですばらしいでしょう。
-1はコミュニティウィキです。 – Samuel