Equal与运算符==的关系
在C#里面有两个不同的相等:应用相等和值相等。顾名思义,值相等表示两个对象所包含的值相等,例如:两个值都是1的具有值相等性,而应用相等比较的不是两个对象,而是这两个“引用对象”是否引用了同一个对象;
1. 值相等类型
如果两对象只是值相等的话,则相等运算符==返回True。否则返回False。
2. 引用相等类型
==操作符表示两个变量的值是否相等,或者引用的是否指向同一个内存地址。
Equals()方法比较的是两个对象指向的内存空间里面的内容是否相同,equals也是比较两个“引用类型”是否是对于同一个对象 的引用。即两个对象的内容是否相同。
代码:
namespace testBool
{
//classperson类
public class ClassPerson
{
public ClassPerson(string strName)
{
name=strName;
}
private string name=null;
//设置类型的字段名和属性
private string Name
{
set{name=value;}
get{return name;}
}
}
//主函数
class Program
{
static void Main(string[] args)
{
int n1 = 1;
int n2 = 1;
Console.WriteLine(n1 == n2); //true
Console.WriteLine(n1.Equals(n2)); //true
string str1 = "test";
string str2 = "test";
Console.WriteLine(str1 == str2); //true
Console.WriteLine(str1.Equals(str2));
object s1=str1;
object s2=str2;
Console.WriteLine(s1==s2);
Console.WriteLine(s1.Equals(s2));
string str3=new string(new char[] {'t','e','s','t'});
string str4=new string(new char[]{'t','e','s','t'});
object s3=str3;
object s4=str4;
Console.WriteLine(s3==s4);
Console.WriteLine(s3.Equals(s4));
ClassPerson p1=new ClassPerson("liuyuanmian");
ClassPerson p2=new ClassPerson("liuyuanmian");
Console.WriteLine(p1==p2);
Console.WriteLine(p1.Equals(p2));
ClassPerson p3=new ClassPerson("zhangxue");
ClassPerson p4=p3;
Console.WriteLine(p3==p4);
Console.WriteLine(p3.Equals(p4));
Console.ReadKey();
}
}
}