2014-06-12 69 views
0

我正在寫代碼片段的一部分,我需要檢查兩個字符串是否相等。但是在我的情況下,即使兩個字符串相等,控件總是會碰到其他部分。C#中的等於方法#

下面是我的代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    GetLoginData data = new GetLoginData(); 
    LoginDataSet login = new LoginDataSet(); 

    string email = "[email protected]"; 
    string password = "asdfghjkl"; 


    login = data.getLoginData(email, password); 
    /* login is a LoginDataSet object reference which holds email and password 
    data retreived from DB.*/ 

    string email1 = login.email.ToString(); 
    string password1 = login.password.ToString(); 

    if (email.Equals(email1) && password.Equals(password1)) 
    { 
     //Does not execute at all 
     Label1.Text = "true"; 
    } 
    else 
     Label1.Text = "false"; 
} 

而且我LoginDataSet類如下:

public class LoginDataSet 
{ 
    public virtual String email 
    { set; get;} 

public virtual String password 
{ set; get; } 

}

請讓我知道什麼是錯誤的。據我所知,String類已經覆蓋了Equals方法,所以我們可以直接使用它。 幫助表示讚賞。在此先感謝

+0

遇到斷點和檢查數值。你確定兩者實際上是一樣的嗎? – Abhitalks

+0

是的,我確定他們是因爲傳遞和接收的數據都是一樣的。但即使如此,我添加了一個斷點,可以清楚地說,兩者都是相同的 –

回答

0

你確定它們是一樣的嗎?如果一個字符是大寫字符,它將不匹配。

如果你想忽略大小寫敏感的使用:

.Equals("", StringComparison.CurrentCultureIgnoreCase) 

您的代碼

if (email.Equals(email1, StringComparison.CurrentCultureIgnoreCase) && password.Equals(password1, StringComparison.CurrentCultureIgnoreCase)) 
{ 
    //Does not execute at all 
    Label1.Text = "true"; 
} 
else 
{ 
    Label1.Text = "false"; 
} 

更新:單獨的if語句

if (email.Equals(email1, StringComparison.CurrentCultureIgnoreCase)) 
{ 
    Label1.Text = "true email"; 
} 
else 
{ 
    Label1.Text = "false email"; 
} 

if (password.Equals(password1, StringComparison.CurrentCultureIgnoreCase)) 
{ 
    Label1.Text = "true password"; 
} 
else 
{ 
    Label1.Text = "false password"; 
} 

這是什麼結果?在前面

刪除空格和結束

string email = Control.Text.Trim(); 
+0

沒有獲得配對...仍然是同樣的事情。但是,無論如何感謝 –

+0

你能告訴我們一個從數據庫中的確切值的副本? – Mivaweb

+0

檢查我的更新答案。結果是什麼? – Mivaweb

1

與Java不同,在C#中,您不需要使用字符串的equals方法。你可以這樣做:

password == password1 

所以,你if聲明將變爲:

if (email == email1 && password == password1) 

equals方法也應該工作。所以請確保你的字符串實際上是相等的(考慮到它們末尾的空格,填充,修整,套管,編碼)。

+0

我甚至嘗試了「==」,但結果相同。它仍然擊中其他部分 –

+0

你調試了嗎?你確定這些值是一樣的嗎? –

+0

'=='實際上結束了在字符串上執行'String.Equals'。 – Abhitalks

0

Equals必須工作。請檢查debugging的值。

還與以下嘗試:

if (email == email1 && password == password1) 
{ 
    //Does not execute at all 
    Label1.Text = "true"; 
} 
+0

我試過調試。即使我很驚訝爲什麼Equals沒有按預期工作。當然,在我身邊的錯誤,但無法追查它 –

+0

Plz發佈調試屏幕,這將是一個好的屏幕截圖。 –