== Equals ReferenceEquals三者的区别

  1. ReferneceEqual

专用于引用类型的比较

对于值类型返回的永远是false

对于引用类型,会比较他们的引用是否相等,假如相等,返回true,否则返回false

对于string类型,也是比较其引用

static void Main(string[] args)
        {
            int a = 100;
            int b = 100;
            Console.WriteLine(ReferenceEquals(a,b)); //false

            string c = "dd";
            string d = "dd";
            Console.WriteLine(ReferenceEquals(c,d)); //True
            Console.ReadKey();
        }
  1. ==

对于值类型,先比较他们的类型,假如类型不同,就转换成同一类型,然后再比较值

int a = 100;
float b = 100;
WriteLine(a == b); //true

对于引用类型,比较引用,等效于ReferenceEqual

  static void Main(string[] args)
        {
            Student student1 = new Student();
            Student student2 = new Student();
            WriteLine(student1 == student2); //false
            Student student3 = student1;
            WriteLine(student1 == student3); //true
 
        }
  class Student
    {
        public string Name { get; set; }
    }

对于string==已经被改写,只会比较它们的值是否相等,不会比较引用

string c = "5";
string d = "5";
WriteLine(c == d); //true 值相等
        

3.Equal
对于值类型,先比较他们的类型,假如类型不同,返回false,假如类型相同则比较值,假如值相同返回true,不同返回false

 int a = 100;
 float b = 100f;
 WriteLine(a.Equals(b)); //false

 double c = 500;
 double d = 500;
 WriteLine(c.Equals(d)); //true

对于引用类型,比较他们的引用是否相等,假如相等,返回true,否则返回false

  class Program
    {
        static void Main(string[] args)
        {

            Student student1=new Student();
            Student student2=new Student();
            WriteLine(student1.Equals(student2)); //false
            Student student3 = student1;
            WriteLine(student3.Equals(student1)); //true
            ReadKey();
        }
    }

    class Student
    {
        public string Name { get; set; }
    }

对于string,Equal已经被改写,只会比较它们的值是否相等,不会比较引用

 string a = "41";
 string b = "41";
 WriteLine(a.Equals(b));//true

同样的,string.Equal(a1,a2)也是比较值是否相等

 string a = "jj";
 string b = "jj";
 WriteLine(String.Equals(a,b)); //true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值