C# 为什么字符串在MessageBox中工作而在if语句中不工作 WebClient wc=新的WebClient(); 字符串代码=wc.DownloadString(“链接”); MessageBox.Show(代码);//代码正确显示在MESSAGEBOX中。 如果(textbox.Text==代码) { MessageBox.Show(“密钥已批准!”); 尝试 { Form1 Form1=新Form1(); 表1.Show(); this.Hide(); } 捕获(例外情况除外) { MessageBox.Show(例如Message); } } 其他的 { MessageBox.Show(“此键不正确”); }

C# 为什么字符串在MessageBox中工作而在if语句中不工作 WebClient wc=新的WebClient(); 字符串代码=wc.DownloadString(“链接”); MessageBox.Show(代码);//代码正确显示在MESSAGEBOX中。 如果(textbox.Text==代码) { MessageBox.Show(“密钥已批准!”); 尝试 { Form1 Form1=新Form1(); 表1.Show(); this.Hide(); } 捕获(例外情况除外) { MessageBox.Show(例如Message); } } 其他的 { MessageBox.Show(“此键不正确”); },c#,winforms,textbox,messagebox,C#,Winforms,Textbox,Messagebox,文本框中的文本是代码字符串中的文本,尽管Textbox.text==code为false,并返回到else参数 知道为什么会这样吗 Textbox中的文本是代码字符串中的文本,尽管Textbox.Text==code为false并返回到else参数 我不相信你。既然你没能证明这一点,我相信你错了 这表明TextBox.Text与code不同。如果它们看起来相同,那么差异可能是额外的空格、大写与小写或其他细微差异 另一个可以想象的原因是,您以某种方式重写了字符串相等运算符,以执行意外操作 请尝试以

文本框中的文本是代码字符串中的文本,尽管
Textbox.text==code
为false,并返回到else参数

知道为什么会这样吗

Textbox中的文本是代码字符串中的文本,尽管Textbox.Text==code为false并返回到else参数

我不相信你。既然你没能证明这一点,我相信你错了

这表明
TextBox.Text
code
不同。如果它们看起来相同,那么差异可能是额外的空格、大写与小写或其他细微差异

另一个可以想象的原因是,您以某种方式重写了字符串相等运算符,以执行意外操作

请尝试以下代码:

Test(TextBox.Text, code);

void Test(string textbox, string code)
{
    if (textbox.Length != code.Length)
    {
        MessageBox.Show("Strings are different lengths!");
        return;
    }

    for (int i = 0; i < textbox.Length; i++)
    {
        if (textbox[i] != code[i])
        {
            MessageBox.Show(string.Format("'{0}' does not equal '{1}'", textbox[i], code[i]));
            return;
        }
    }
    MessageBox.Show("Strings are identical!");
}
测试(TextBox.Text,code);
无效测试(字符串文本框、字符串代码)
{
if(textbox.Length!=code.Length)
{
Show(“字符串的长度不同!”);
返回;
}
for(int i=0;i
为什么不在比较字符串时使用
.equals()
而不是
=

返回的字符串中可能有前导空格或尾随空格。我已经检查过,没有空格。我们可能需要查看您正在比较的字符串的示例。还可能包含零长度字符。您应该检查正在比较的两个字符串是否具有相同的长度。其他可能是看起来相同但实际上是不同字符的同形符。因为
textbox.Text
code
不是相同的字符串。当我在某处显示它时,它看起来可能是一样的,但实际数据不一样。我建议您选择两个字符串的任意一个来比较它们。@Fabio:这是确定的答案。现在证实是正确的。这只会对Java产生影响,而不会对C#产生影响。