using System;
/// <summary>
/// ==和equals区别
/// </summary>
namespace __和equals区别
{
internal class Program
{
static void Main(string[] args)
{
GC.Collect();
int a=1;
string strA = "Hello";
byte b;
//string strB = string.Copy(strA);
string strB = strA;
Console.WriteLine(strA == strB); //True
Console.WriteLine(strA.Equals(strB)); //True
Console.WriteLine(object.Equals(strA, strB)); //True
Console.WriteLine(object.ReferenceEquals(strA, strB)); //True
MyClass oA = new MyClass();
MyClass oB = new MyClass();
Console.WriteLine(oA == oB); //False
Console.WriteLine(oA.Equals(oB)); //False
Console.WriteLine(object.Equals(oA, oB)); //False
Console.WriteLine(object.ReferenceEquals(oA, oB)); //False
}
}
class MyClass
{
public int value = 1;
}
}
总结:对于引用类型(string除外),==比较的是引用类型在栈中的地址,equals方法比较的是引用类型在托管堆中的存储信息的内容。