C# 代码在相等比较时返回false?

C# 代码在相等比较时返回false?,c#,multithreading,sockets,equals,C#,Multithreading,Sockets,Equals,我目前的问题是: 我的服务器将数据返回给客户端,这包括一个名称。现在我希望客户机获取这个名称并进行比较。然而,在过去的3个小时里,我被这个问题困住了,我不想廉价地解决它 我的服务器返回一个值,然后返回一个名称,例如:random23454@NAMEHERE 我使用以下方法拆分值: string[] values = returndata.Split('@'); 然后我在做: if (textBox3.Text == values[1]) { MessageBox.Show("equal");

我目前的问题是:

我的服务器将数据返回给客户端,这包括一个名称。现在我希望客户机获取这个名称并进行比较。然而,在过去的3个小时里,我被这个问题困住了,我不想廉价地解决它

我的服务器返回一个值,然后返回一个名称,例如:random23454@NAMEHERE

我使用以下方法拆分值:

string[] values = returndata.Split('@');
然后我在做:

if (textBox3.Text == values[1]) {
MessageBox.Show("equal");
}
然而,这里的问题是。我不能让它相等,我尝试了其他方法,但它只是不显示相等

我所做的:

将textBox3.Text打印到一个textbox,将值[1]打印到另一个textbox,并与我的眼睛和鼠标进行比较(使用线程调用)

使用了.Trim()函数 对值[1]使用.ToString()(只是为了好玩) 将它们分配给一个完整的新字符串,修剪它们并进行比较

使用以下命令将比较拖到线程外部:

this.Invoke((MethodInvoker)delegate()
                        {
                            outside(name);
                        });
并执行相同的检查

我的代码:

 string returndata = System.Text.Encoding.ASCII.GetString(inStream);
                readData = "" + returndata;
                if (readData.Contains("@") && readData.Contains("random"))
                {


                    string[] values = returndata.Split('@');
                    string name = values[1].Trim();

                    if (textBox3.Text == name)
                    {
                        MessageBox.Show("true");
                    }
                    else
                    {
                        MessageBox.Show("false");
                        this.Invoke((MethodInvoker)delegate()
                        {
                            outside(name);
                        });

                    }
我还能做什么?我只是不明白这是不平等的


提前感谢。

从服务器返回的数据可能是一个字节数组。在拆分之前,请先尝试将响应转换为
字符串。在进一步操作之前,还可以尝试将响应(或响应的类型)打印到控制台,以查看得到的结果

还要确保每个字符串的
长度
相同。也许可以试试utf-8而不是ASCII?像这样:

System.Text.Encoding.UTF8.GetString(inStream);

string name=value[1].Trim()


我想您需要
值[2]
在这里。按照我阅读文档的方式,索引1处的元素将是(空白)分隔符指示器。

您需要告诉我们有关
inStream
。我强烈怀疑这是一个字节数组,其中包含实际数据,然后是一堆0。。。您应该使用
string text=Encoding.ASCII.GetString(data,0,dataRead)
-或者使用
StreamReader
开始。您是否尝试将这两个值打印到控制台?尝试修剪
文本框
文本。(
textBox3.Text.Trim()
)我已将这两个值打印到messageBox和textBox,它们都是相同的。@user2911924请尝试
System.Text.Encoding.UTF8.GetString(inStream)
而不是
System.Text.Encoding.ASCII.GetString(inStream)
。我在messagebox和textbox中都看到了输出,它只是普通的纯文本。给我一个错误,它超出了索引,此外,如果是这种情况,它也不会在messagebox或textbox中显示纯值。无论如何,谢谢你的意见!