在下分别用了以下两种方法比较字符串:        ianswer = "x" + ds.Tables["tablename"].Rows[0]["answer"].ToString().Trim();        choose = "x" + e.CommandArgument.ToString().Trim();        //if (ianswer == choose)
        //{
        //    Label1.Text = "y"; 
      // }
        //else
        //{
        //    Label1.Text = "n";
        //}
        if (String.ReferenceEquals(ianswer, choose))
            Label1.Text = "y";
        else
            Label1.Text = "n";可是郁闷的是 不管怎么样返回的都是n,请教下高手这是怎么回事啊 

解决方案 »

  1.   

    ReferenceEquals是Object的静态方法,用于比较两个引用类型的对象是否是对于同一个对象的引用。对于值类型它总是返回false
    Equals方法对于值类型和引用类型的定义不同,对于值类型,类型相同,并且数值相同(对于struct的每个成员都必须相同),则Equals返回true,否则返回false。而对于引用类型,默认的行为与ReferenceEquals的行为相同,仅有两个对象指向同一个Reference的时候才返回true