c# - 从条件语句中获取计数

标签 c# c#-4.0 foreach variable-declaration

我正在尝试使用计数变量来计算条件为真的次数,并将其用于比较。但是当我编译它时,计数始终为 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/

相关文章:

c# - IF NOT EXISTS INSERT sql 语句不起作用 C#

c#-4.0 - DB表和Class如何设计?

C#Linq按组选择多列并同时在值字段上应用求和(聚合函数)

c# 使用子字符串和正则表达式编辑大字符串

java - 如何使用 Files.lines(...).forEach(...) 读取文件?

c# - Markdown 为PDF

c# - 从 OData 返回单个实体 - .Net

c#-4.0 - 处理 ObservableCollection<>

c++ - 使用 for_each 调用带有成员数据的成员函数

c# - 如何禁止 WebView 在 WinRT 中打开浏览器上的链接(target=_blank links)?