C#NET String.Compare问题

时间:2011-02-13 21:19:52

标签: c# .net string compare

我正在为课堂做一些功课,并决定添加一些额外的东西,让我有点困惑。我尝试了各种比较方法,但似乎都没有,但我不明白为什么。

基本上,当订单添加到系统时,它会创建类'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 个答案:

答案 0 :(得分:4)

而不是

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

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

答案 1 :(得分:0)

对于字符串比较,最好使用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;
            }
        }
    }
}

答案 2 :(得分:0)

String.Compare返回一个数字,而不是布尔值 数字将为正数,负数或零,具体取决于字符串的相对字母顺序。

您应该致电String.Equals,然后通过StringComparison.OrdinalIgnoreCase

答案 3 :(得分:0)

我怀疑你真的想将ordersListBox的字符串表示与一些合理的字符串进行比较。

任何对象的 ToString()的默认实现是输出实例类型的名称。 ordersListbox最有可能就是这样做的。您需要咨询SelectedValue。

答案 4 :(得分:0)

你也可以试试这个。

 if (String.Compare(i.GetClientName(), ordersListBox.SelectedValue.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0)
        {
            MessageBox.Show(i.GetClientName());
            break;
        }