我正在尝试使用计数变量来计算条件为真的次数,并将其用于比较。但是当我编译它时,计数始终为 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++;
}
最佳答案
在 scope 之外定义 count
循环的
int count = 0;
foreach (ReservationType requestReservation in RequestReservation)
{
List<String> DateList = CreateDateList(requestReservation.StartDate, requestReservation.numDays);
foreach (Inventory inventory in RoomInventory)
{
// Rest of code
}
}
参见 Variable and Method Scope in Microsoft .NET - 变量仅在循环范围内定义,在范围结束时删除对它的任何引用。通过在循环之前定义它,它可用于外部作用域和任何嵌套作用域
请注意,当您定义 int i = 0;
时,count
也被定义在错误的位置;您实际上总是在检查 0 的相同位置
在你的 if 语句中:
//i is always 0
if (DateList[i] == inventory.Date && inventory.Quantity > 0)
关于c# - 从条件语句中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271363/