C # NET String.Сравнить выпуск - PullRequest
1 голос
/ 14 февраля 2011

Я работаю над домашней работой для класса и решила добавить кое-что еще, и немного запуталась. Я пробовал различные методы сравнения, и ни один из них, похоже, не работает, но я не понимаю, почему.

Обычно, когда заказ добавляется в систему, он создает экземпляр класса OrderInfo и добавляет его в ArrayList. В моем коде я использую цикл foreach (), чтобы найти экземпляр класса, который соответствует записи в ListBox, которую они щелкнули, но что-то не так.

private void ordersListBox_DoubleClick(object sender, EventArgs e)
{
    if (ordersListBox.SelectedItem != null)
    {
        foreach (OrderInfo i in ordersList)
        {
            if (String.Compare(i.GetClientName(), ordersListBox.ToString(), true) == 0)
            {
                MessageBox.Show(i.GetClientName());
                break;
            }
        }
    }
}

Ответы [ 5 ]

4 голосов
/ 14 февраля 2011

Вместо

 if (String.Compare(i.GetClientName(), ordersListBox.ToString(), true) == 0)

попробуйте

 if (String.Compare(i.GetClientName(), ordersListBox.SelectedValue.ToString(), true) == 0)
0 голосов
/ 13 февраля 2014

Вы также можете попробовать это.

 if (String.Compare(i.GetClientName(), ordersListBox.SelectedValue.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0)
        {
            MessageBox.Show(i.GetClientName());
            break;
        }
0 голосов
/ 14 февраля 2011

Я сомневаюсь, что вы действительно хотите сравнить строковое представление ordersListBox с какой-нибудь разумной строкой.

Реализация по умолчанию ToString () любого объекта заключается в выводе имени типа экземпляра. OrdersListbox, скорее всего, делает именно это. Вы хотите обратиться к SelectedValue.

0 голосов
/ 14 февраля 2011

String.Compare возвращает число, а не логическое значение.
Число будет положительным, отрицательным или нулевым, в зависимости от относительного алфавитного порядка строк.

Вы должны позвонить String.Equals и передать StringComparison.OrdinalIgnoreCase.

0 голосов
/ 14 февраля 2011

Для сравнения строк лучше использовать метод Equals () .

private void ordersListBox_DoubleClick(object sender, EventArgs e)
{
    if (ordersListBox.SelectedItem != null)
    {
        foreach (OrderInfo i in ordersList)
        {
            if (i.GetClientName().Equals(ordersListBox.ToString()))
            {
                MessageBox.Show(i.GetClientName());
                break;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...