使用==运算符比较值

时间:2014-12-30 18:33:16

标签: c#

我有一个静态方法,只需比较两个值并返回结果

public class Calculator
{
    public static bool AreEqual(object value1, object value2)
    {
        return value1 == value2;
    }

}

 bool Equal = Calculator.AreEqual("a", "a"); // returns true
 bool Equal = Calculator.AreEqual(1, 1);    // returns false

有人可以解释产生上述输出的幕后发生的事情

1 个答案:

答案 0 :(得分:1)

运行时标识"a"的文字用法,并检索对所有这些用法的相同引用,从而产生一个字符串对象,而不是您期望的两个字符串对象。

请尝试以下方法,而不是使用文字:

string A1 = new string(new char[] {'a'});
string A2 = new string(new char[] {'a'});

Calculator.AreEqual(A1, A2); // returns false

您在此处介绍的内容称为字符串实习 您可以在String.Intern方法页面中找到更多信息。