C#中的Equals方法

时间:2014-06-12 11:13:25

标签: asp.net

我正在编写代码片段的一部分,我需要检查两个字符串是否相等。但在我的情况下,即使两个字符串相等,控件总是会击中else部分。

以下是我的代码:

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

    string email = "abc@gmail.com";
    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方法,因此我们可以直接使用它。 感谢帮助。提前致谢

3 个答案:

答案 0 :(得分:1)

与Java不同,在C#中,您不需要对字符串使用equals方法。你可以这样做:

password == password1

因此,您的if声明将变为:

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

equals方法也应该有效。因此,请确保您的字符串实际上是等于的(考虑它们末尾的空格,填充,修剪,套管,编码)。

答案 1 :(得分: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();

答案 2 :(得分:0)

Equals必须有效。请按debugging检查值。

请尝试以下操作:

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