2013-05-12 122 views
0

我一直試圖糟糕的最後兩天讓我的代碼的這部分正常工作。C#元組比較

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"); 
    } 
} 

的...

if (tupleObj.Item2.Equals(ConnectedClientsListView.FocusedItem.SubItems[2].Text)) 

...犯規得到真實的,即使兩個字符串包含相同的值。如果永遠不會通過。如何正確比較元組obj和listViewItem?

+0

你確定它們是相同的價值呢?和兩個字符串?請注意,'Equals'方法使用序數(區分大小寫和文化不敏感)的比較,例如, 「文件」和「文件」是不同的。 – 2013-05-12 10:45:22

+0

我相信他們都包含相同的值,也包括字符串。 – user1906993 2013-05-12 10:54:11

+0

是'string'類型的'Text'屬性,還是像'object'這樣更通用的東西? – 2013-05-12 12:41:25

回答

0

這個怎麼樣

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!"); 
} 
+0

或者應該工作,但。 – 2013-05-12 10:44:50

+0

這不是做大小寫不敏感比較的正確方法。使用一個採用'StringComparison'枚舉的重載,並指定一個不區分大小寫的參數:http://msdn.microsoft.com/en-us/library/system.string.equals.aspx – 2013-05-12 10:48:00

+0

不支持,仍然返回false。兩個字符串都包含「192.168.1.66:123」字符串中的一個ip和端口。 – user1906993 2013-05-12 10:51:24