今天,我正在阅读有关==运算符,Equal函数和Object.ReferenceEqual方法。运算符==,等于方法和Object.ReferenceEqual在C#
- 运算符==它用于检查相等的引用。
- 等方法 - 它用于检查相等的值。
- Object.ReferencEqual - 它用于检查相等的引用。
我已经创建了一个测试控制台应用程序。我有几个问题。如果你给我所有的答案,这对我会有帮助。
class Program
{
static void Main(string[] args)
{
int intValue = 5;
string strValue = "5";
Console.WriteLine(string.Format("{0} ", intValue.ToString() == strValue));// Output is TRUE
Console.WriteLine(string.Format("{0} ", intValue.Equals(strValue))); // Output is FALSE
Console.WriteLine(string.Format("{0} ", intValue.ToString().Equals(strValue))); // Output is TRUE
Console.WriteLine(string.Format("{0} ", object.ReferenceEquals(intValue, strValue)));// Output is FALSE
Console.WriteLine(string.Format("{0} ", object.ReferenceEquals(intValue.ToString(), strValue)));// Output is FALSE
Console.Read();
}
我在输出中有五行。
第1行 - 输出为真。据我所知,在这里我在做铸造。所以我得到TRUE ==运算符检查引用。
第2行 - 输出错误。
问题1.对象的等功能检查值。这里我们有相同的价值,但我得到了假。为什么?
第3行 - 输出为真。
问题2在这里我正在铸造,所以我变得真实。为什么?
第4行。输出错误。
据我所知,两个对象都是不同的类型。所以,我变得错了。
第5行。输出错误。
问题3在这里,我正在铸造,但我仍然得到假。为什么?
问题4. ==运算符和Object.ReferenceEqual有什么区别?
==操作符已被重载的字符串,并比较它们的值不是他们的引用。 – dotctor
您的问题涉及到投射,但您的示例代码中绝对没有显示投射。 –
请首先阅读[Object.Equals](https://msdn.microsoft.com/en-us/library/bsc2ak47(v = vs.110).aspx)文档。 “当前实例和obj参数之间的比较类型取决于当前实例是引用类型还是值类型。”所以“它用于检查相等的值”是不正确的。 –