Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#元组比较_C#_Comparison_Tuples - Fatal编程技术网

C#元组比较

C#元组比较,c#,comparison,tuples,C#,Comparison,Tuples,在过去的两天里,我一直在努力让这部分代码正常工作 foreach (Tuple<StateObject,string> tupleObj in TCP_Globals.stateObj) { if (tupleObj.Item2.Equals(ConnectedClientsListView.FocusedItem.SubItems[2].Text)) { MessageBox.Show("DEBUG #3"); StateObjec

在过去的两天里,我一直在努力让这部分代码正常工作

foreach (Tuple<StateObject,string> tupleObj in TCP_Globals.stateObj)
{

    if (tupleObj.Item2.Equals(ConnectedClientsListView.FocusedItem.SubItems[2].Text))
    {
        MessageBox.Show("DEBUG #3");
        StateObject stateObj = tupleObj.Item1; //Obtain the underlying socket management class via remoteIP
        MessageBox.Show("DEBUG #4");
    }
}
…即使两个字符串包含相同的值,也不会变为true。如果永远不会过去。如何正确比较元组obj和listViewItem?

这方面如何

if (tupleObj.Item2.ToString().ToLower() == 
         ConnectedClientsListView.FocusedItem.SubItems[2].Text.ToLower())
编辑:

既然你说字符串是IP,那么在这种情况下

var firstip = IPAddress.Parse(first_string);
var secondip = IPAddress.Parse(second_string);

if (firstip.Equals(secondip))
{
    Console.WriteLine("Equal!");
}

你确定它们的值相同吗?两条线呢?请注意,
Equals
方法使用序号(区分大小写和区域性)比较,因此例如“file”和“file”是不同的。我确信它们都包含相同的值,也包含字符串。类型为
string
Text
属性,或者像
object
这样更一般的东西?这不是进行不区分大小写比较的正确方法。使用接受
StringComparison
enum的重载,并指定一个不区分大小写的重载:no,仍然返回false。这两个字符串都包含“192.168.1.66:123”字符串中的ip和端口。@user1906993:在这种情况下,请使用
IPAddress
类。它与区分大小写或大写无关,因为它只是数字。我最好的猜测是,确实存在一个细微的差异,您没有注意到这一点,无论您使用何种机制查看。调试并查看该字符串通常是最好的检查方法,但考虑到这里的困难,我还尝试使用
Encoding.UTF8.GetBytes(…)
获取每个
byte[]
,并将它们与调试器或其他输出进行比较;这样,您就可以完全确定字符中的任何差异(有些字符可能看起来很相似,但字节中没有歧义)。
var firstip = IPAddress.Parse(first_string);
var secondip = IPAddress.Parse(second_string);

if (firstip.Equals(secondip))
{
    Console.WriteLine("Equal!");
}