2016-10-26 6 views
3

条件変数が真である回数をカウントし、比較のためにカウント変数を使用しようとしています。しかし、私はそれをコンパイルするとき、カウントは常に0になります、それは条件が真であっても、増分することはありません。条件文からのカウントの取得

foreach (ReservationType requestReservation in RequestReservation) 
{ 
    List<String> DateList = CreateDateList(requestReservation.StartDate, requestReservation.numDays); 

    foreach (Inventory inventory in RoomInventory) 
    { 
     if (requestReservation.hotelId == inventory.HotelId) 
     { 
      if (requestReservation.roomType == inventory.RoomType) 
      { 
       int count = 0; 
       int i = 0; 
       if (DateList[i] == inventory.Date && inventory.Quantity > 0) 
       { 
        count++; 

        if (requestReservation.numDays == count) 
        { 
         requestReservation.reservationId = reservationid; 
         requestReservation.result = ReservationType.ReservationResultType.Success; 
         inventory.Quantity--; 
        } 
        else 
        { 
         requestReservation.result = ReservationType.ReservationResultType.RoomNotAvailable; 

        } 
       } 
      } 
     }      
    } 
    reservationid++; 
} 
+1

'int count = 0;'はforeachループの外にあるべきです –

+0

コンパイル時に値を変更できますか?興味深い –

答えて

7

ループ

int count = 0; 
foreach (ReservationType requestReservation in RequestReservation) 
{ 
    List<String> DateList = CreateDateList(requestReservation.StartDate, requestReservation.numDays); 
    foreach (Inventory inventory in RoomInventory) 
    { 
     // Rest of code 
    } 
} 

scopecount外部を定義Variable and Method Scope in Microsoft .NETを見る - 変数はちょうどループの範囲および範囲の端部に定義され、それへの参照が削除され。 int i = 0;あなたが実際にいつでもあなたの場合に0の同じ位置を確認している:ループの前に、それを定義することで、それはあなたが定義したときcountとしても、間違った場所に定義されていることを

お知らせ外側のスコープとネストされたスコープに提供されています声明:

//i is always 0 
if (DateList[i] == inventory.Date && inventory.Quantity > 0) 
+0

私はforeachの外でも宣言しますが、どのようにこのメソッドを使用してインクリメントしますか、これを行うにはforループを使用する方が良いですか? – user6875449

+0

@ user6875449 - あなたはあなたのやり方と同じようにそれを増やします。これは入れ子スコープとは異なるメソッドではありません。 –

+0

yea。何らかの理由でcount = 13、dateList [i]が4つの要素しか持たず、そのリストの各要素が真でなければなりません。だから私は他の9カウントが – user6875449

1

あなたは、ループ内で数を宣言している、それが0になるたびにループの外にそれを宣言し、それがつもり作業

1

は、最初のforeachループの前にカウント変数を定義しています。

関連する問題