C#中的equals()和==
2021-05-03 09:28
标签:ace 结构体 不能 void 类型 test mes write pac 总结: ①两个“相同”的值类型不管是equals()还是==都返回True,两个“相同”的值类型不管是equals()还是==都返回False。 ②上面这句话并不完全正确,因为值类型中有个特例:结构体;引用类型中也有个特例:字符串。 ③除字符串之外的引用类型,以及结构体,根本不能用==去对比,编译就会报错。 C#中的equals()和== 标签:ace 结构体 不能 void 类型 test mes write pac 原文地址:http://www.cnblogs.com/9cct/p/7749358.htmlusing System;
namespace EqualsTest
{
class EqualsTest
{
static void Main(string[] args)
{
//值类型
int x = 1;
int y = 1;
Console.WriteLine(x == y);//True
Console.WriteLine(x.Equals(y));//True
//引用类型
A a = new A();
B b = new B();
//Console.WriteLine(a==b);//报错
Console.WriteLine(a.Equals(b));//False
//字符串(最像值类型的引用类型)
string m = "1";
string n = "1";
Console.WriteLine(m==n);//True
Console.WriteLine(m.Equals(n));//True
//结构体(最像引用类型的值类型)
T t = new T();
V v = new V();
//Console.WriteLine(t == v);//报错
Console.WriteLine(t.Equals(v));//True
Console.Read();
}
}
class A { public int X = 1; }
class B { public int X = 1; }
struct T { int X; }
struct V { int X; }
}