2015-04-01 53 views
0

我有以下代碼,它給出了一個警告「可能意外的參考比較;獲得值比較,投在右邊的類型string」:錯誤:可能意想不到的參考比較得到一個值比較投右手

// oControl is of type Control 
if ((ocontrol.Name == oDataRowView["ConName"].ToString())) 
{ 
    //Do stuff 
} 
else 
{ 
    //Do other Stuff 
} 

我試着用下面的每個修復它,但我仍然得到一個警告

if ((ocontrol.Name == Convert.ToString(oDataRowView["ConName"]))) 
{ 
    //Do stuff 
} 
else 
{ 
    //Do other Stuff 
} 
if ((ocontrol.Name == (string)oDataRowView["ConName"])) 
{ 
    //Do stuff 
} 
else  
{ 
    //Do other Stuff 
} 

請有人能解釋我還是收到了警告和最佳實踐的方式來處理的原因這個?

+0

在哪條線路到底如何?一般來說,這意味着你正試圖比較一個Object和一個String。因爲不是都是字符串,而是使用Object.Equals而不是'String.Equals'。這隻會比較參考而不是數值。 – 2015-04-01 12:11:01

+0

對不起,我試過的最後3個條件。在第一條件第一行有顯示錯誤 – 2015-04-01 12:19:20

+0

控制oControl;對象類型 – 2015-04-01 12:21:58

回答

0

這些選項將工作:

if (Equals(ocontrol.Name, oDataRowView["ConName"])) // likely best option 

if ((string)ocontrol.Name == oDataRowView["ConName"].ToString()) // assuming neither item is null 

if (ocontrol.Name as string == oDataRowView["ConName"] as string) // assuming second item is actually a string