C# 对字符串进行布尔测试会产生意外结果

C# 对字符串进行布尔测试会产生意外结果,c#,boolean,C#,Boolean,这应该是不言自明的。我试图检测字符串foo的第一个字符是否是负号“-”。这只是一个测试代码来测试它 private void button1_Click(object sender, EventArgs e) { string foo = textBox1.Text; bool negativeValue = foo[1]==('-'); //bool negativeValue = foo[1].Equals ('-');

这应该是不言自明的。我试图检测字符串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。为什么?

C#中的索引查找是基于零的。所以你应该打电话:

foo[0] == ('-')
使用
1
将查找第二个字符

编辑:也可以使用以下选项(可能更清楚):

foo.StartsWith(“-”)

不管你有多醉,这都应该管用。:)

(也考虑修剪文本输入,如果您想避免用户输入的过量/意外的前空格)

< P>索引查找在C中是零的。所以你应该打电话:

foo[0] == ('-')
使用
1
将查找第二个字符

编辑:也可以使用以下选项(可能更清楚):

foo.StartsWith(“-”)

不管你有多醉,这都应该管用。:)


(也可考虑修剪文本输入,如果您想避免用户输入的过量/偶然的前空格)

您使用的是错误索引。用<代码> 1 /代码>,您实际上指的是第二个字符

使用
0

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

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

使用
0

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

哦,天哪,Windows把我换成了加拿大英语,让我把它换回来。那里修好了。认真地我讨厌这些废话。因为“加拿大英语”真的是“法语”的意思,而且喜欢(似乎)在任何时候随意切换。就像我说的,我今天不喝酒了。哦,伙计,Windows把我切换到了加拿大英语,让我把它切换回来。这是固定的。认真地我讨厌这些废话。因为“加拿大英语”真正的意思是“法语”,而且喜欢(似乎)在任何时候随意切换。正如我所说的,今天我不再喝酒了。谢谢。今天没有酒了!除了使用不正确的索引外,您还可以使用更惯用的
string.StartsWith
方法:谢谢。今天没有酒了!除了使用不正确的索引外,您还可以使用更惯用的
string.StartsWith
方法:在这种情况下,您可以通过调试应用程序并查找
foo[1]
的值来轻松发现错误。建议:在这种情况下,通过调试应用程序并查找
foo[1]
的值,您可以很容易地发现错误。建议:和