1

我有一个预订服务,如果你想显示所有座位、所有可用座位或所有预订座位,你可以通过枚举选择。

我的问题是我不知道如何制作,即只显示预订座位,因为到目前为止,如果我选择“仅预订座位”,它会显示正确数量的预订座位,但它会从头开始迭代整个数组而不是我想要的数组,所以如果有 3 个预留座位,它将显示座位 0、1、2,而不是实际预留的座位。

我很确定我需要将 to 更改for (int i = 0; i < count; i++)for (int i = 0; i < totalNumberOfSeats; i++)实际循环遍历所有座位,而不是像我想显示的那样多,但是后来我超出了绑定异常,我不知道如何继续。

public string[] GetSeatInfoStrings(DisplayOptions choice)
    {
        int count = GetNumOfSeats(choice);

        if (count <= 0)
        {
            return null;
        }
        string[] strSeatInfoStrings = new string[count];

        for (int i = 0; i < count; i++)
        {
            strSeatInfoStrings[i] = GetSeatInfoAt(i);
        }
        return strSeatInfoStrings; 
    }


public string GetSeatInfoAt(int index)
    {
        int row = GetRow(index);
        int col = GetCol(index);

        string seatInfo;

        if (string.IsNullOrEmpty(GetName(m_nameMatrix[row, col])))
        {
            seatInfo = MarkAsVacant(row, col);
        }
        else
        {
            seatInfo = MarkAsReserved(row, col);
        }
        return seatInfo;
    }

我有一个方法 IsReserved(int index) 并尝试了类似的方法

if (IsReserved(i))
            {
                // Want to return all seats that are reserved
            }
            else if (!IsReserved(i))
            {
                // Want to return all seats that are NOT reserved
            }

至于该方法的工作原理,没关系,但问题是我不知道在括号内放什么。

4

2 回答 2

1

这是一个在不知道您的完整模型的情况下我们无法提供帮助的问题。细节很少。可能你想要这样的东西:

string[] strSeatInfoStrings = new string[count];
int counter = 0;
for (int i = 0; i < totalNumberOfSeats; i++)
{
    var seatInfo = GetSeatInfoAt(i);
    if (seatInfo  == "reserved") //some kind of checking
    {   
        strSeatInfoStrings[counter] = seatInfo;
        counter++; //run another counter
    }
}
return strSeatInfoStrings; 

您可以避免数组和计数器的所有麻烦,只需使用List<T>..

var strSeatInfoStrings = new List<string>();
for (int i = 0; i < totalNumberOfSeats; i++)
{
    var seatInfo = GetSeatInfoAt(i);
    if (seatInfo  == "reserved") //some kind of checking
        strSeatInfoStrings.Add(seatInfo);
}
return strSeatInfoStrings; 
于 2013-07-25T22:13:22.380 回答
1

在这种情况下,使用 List 可能比使用数组更容易,因为使用 List 在开始添加之前不需要知道大小。

public string[] GetSeatInfoStrings(DisplayOptions choice)
    {
        List<string> lstSeatInfoStrings = new List<string>();

        for (int i = 0; i < totalNumberOfSeats; i++)
        {
            string seatInfo = GetSeatInfoAt(i);

            if (seatInfo.Reserved)
            {
                lstSeatInfoStrings.Add(seatInfo);
            }

        }
        if (lstSeatInfoStrings.Count == 0)
        {
            return null;
        }

        return lstSeatInfoStrings.ToArray();
    }
于 2013-07-25T22:16:42.587 回答