对字符串进行Bool测试会产生意外结果

时间:2013-07-14 13:55:03

标签: c# boolean

这应该是自我解释的。我试图检测字符串foo的第一个字符是否为负号' - '。这只是测试它的测试代码。

 private void button1_Click(object sender, EventArgs e)
    {
        string foo = textBox1.Text;
        bool negativeValue = foo[1]==('-');
        //bool negativeValue = foo[1].Equals ('-');

        if (negativeValue == true)
        {
            label1.Text = "First char is negative !";
        }

        else if (negativeValue == false)
        {
            label1.Text = "First char is not negative !";
        }
    }

即使文本框中的第一个字符为' - ',结果也始终为false。为什么呢?

2 个答案:

答案 0 :(得分:3)

C#中的索引查找是从零开始的。所以你应该致电:

foo[0] == ('-')

使用1将查找第二个字符。

编辑:另外作为替代方案(也许更清晰),您可以随时使用:

foo.StartsWith("-")

无论你多么卑鄙,这都应该有效。 :)

(另外,如果你想避免用户输入的空间过多/意外,请考虑修剪文本输入)

答案 1 :(得分:2)

你使用了错误的索引。1你实际上指的是第二个字符

使用0

 bool negativeValue = foo[0]==('-');