我有一个静态方法,只需比较两个值并返回结果
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
有人可以解释产生上述输出的幕后发生的事情
答案 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方法页面中找到更多信息。