2016-06-22 25 views
0

私のリストで算術演算を実現したい場合、この場合: 列 "幅" *列 "高さ"は列 "部分"を書き直すべきです。 私はループを試みましたが、動作していません。 私は行にブレークポイントを置く:c#算術演算のリスト

_Area[i].Partial = _Area[i].width * _Area[i].height;

とデバッグ、私はこの行がreadedされていないと考えることができ、それらを停止することはありません。

これは私のコレクションビューモデルである:

public class CollectionVM_Area : BindableBase 
{ 
    private Values_Area _Area = new Values_Area(); 
    public Values_Area Area 
    { 
     get { return _Area; } 
     set { SetProperty(ref _Area, value); } 
    } 

    public CollectionVM_Area() 
    { 
     _Area.Add(new Area() 
     { 
      width=10, 
      height=11, 
     }); 
     _Area.Add(new Area() 
     { 
      width=5, 
      height=5, 
      Partial=1, 
     }); 

     bool NeedPartial = false; 
     int i = 0; 
     while (NeedPartial = false && i < _Area.Count) 
     { 
      if (_Area[i].Partida == true) 
      { 
       NeedPartial = true; 
      } 
      else 
      { 
       i++; 
      } 
     } 

     if (NeedPartial==true) 
     { 
      _Area[i].Partial = _Area[i].width * _Area[i].height; 
      NeedPartial = false; 
     } 
     else 
     { 
      NeedPartial = true; 
     } 
    } 
} 

は私のプロジェクトでは、UWPですが、私は任意の助けが高く評価され、リストのWindowsフォームとでは違いはありませんだと思います。

+0

'NeedPartial = false'行は実行されていますか?その場合は、プロジェクトを再構築して、再度デバッグする必要があります。そうでなければあなたの 'NeedPartial == true'(これは' if(NeedPartial) '条件が決して通過しないように簡略化することができます) – HimBromBeere

+0

素早く返信いただきありがとうございます; NeedApart [=] .width * _Area [i] .height;が実行されていない – Julius

+0

条件が満たされていない場合、 'NeedPartial'の値をチェックしてください' true'ですか?そうではありません。 (これは最後の 'if'ブランチの2番目のステートメントにも当てはまります) – HimBromBeere

答えて

0

コードに2つのミスがあります。最初にあなたのwhile -loopは、比較の代わりに割り当てを行います(===に向けて)。したがって、while-condition allwaysの最初の語は、falseと評価されます。第2に、あなたの計算はループの外にあり、NeedPartial値が設定されますが、決して読み取られることはありません。

書き込みこのその:

bool NeedPartial = false; 
int i = 0; 
while (NeedPartial == false && i < _Area.Count) // or even simpler: while (!NeedPartial ...) 
{ 
    if (_Area[i].Partida == true) // or simply: if (_Area[i].Partida) { ... } 
    { 
     NeedPartial = true; 
    } 
    else 
    { 
     i++; 
    } 

    if (NeedPartial==true) // if (NeedPartial) ... 
    { 
     _Area[i].Partial = _Area[i].width * _Area[i].height; 
     NeedPartial = false; 
    } 
    else 
    { 
     NeedPartial = true; 
    } 
} 
0

編集:答えました。

正しいループは次のとおりです。あなたの助けのためのHimBromBeereへ

bool NeedPartial = false; 
      int i = 0; 
      while (!NeedPartial && i < _Area.Count) 
      { 
       if (_Area[i].Partida) 
       { 
        NeedPartial = true; 
       } 
       else 
       { 
        i++; 
       } 
       if (NeedPartial) 
       { 
        _Area[i].Partial = _Area[i].width * _Area[i].height; 
        NeedPartial = false; 
        i++; 
       } 
       else 
       { 
        NeedPartial = true; 
       } 
      } 

感謝。