zoukankan      html  css  js  c++  java
  • C#比较两个对象是否为同一个对象。

    两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存。

    1、使用object.ReferenceEquals()

    class Program
        {
            static void Main(string[] args)
            {
                Person p1 = new Person();
                p1.Name = "Mark";
                Person p2 = new Person();
                p2.Name = "Marl";
                Person p3 = p1;
                Console.WriteLine(object.ReferenceEquals(p1,p2));
                Console.WriteLine(object.ReferenceEquals(p1,p3));
    
            }
            class Person
            {
                public string Name { get; set; }
            }
        }
       //结果:false。
            true

    2.使用object.equals()

    class Program
        {
            static void Main(string[] args)
            {
                Person p1 = new Person();
                p1.Name = "Mark";
                Person p2 = new Person();
                p2.Name = "Marl";
                Person p3 = p1;
                Console.WriteLine(p1.Equals(p2));
                Console.WriteLine(p1.Equals(p3));
    
            }
            class Person
            {
                public string Name { get; set; }
            }
        }
      //结果同上

    3、使用==    得到同样的结果。

    目前来看,这三个方法都能判断两个对象是否为同一个对象。但是:

    static void Main(string[] args)
            {
                string s1 = new string(new char[] { 'a', 'b' });
                string s2 = new string(new char[] { 'a', 'b' });
                Console.WriteLine(s1==s2);//true
                Console.WriteLine(s1.Equals(s2));//true
                Console.WriteLine(object.ReferenceEquals(s1,s2));//false
            }

    这两个s1,s2是两个不同的对象,因为new了两次,在堆中存在两块不同的内存。

    总结:

    Equals:内部是判断两个对象中的值是否一样。

    ==:内部还是调用的equals方法,所以应该同上。

    所以用第一种。

  • 相关阅读:
    [No0000161]IDEA初步接触
    [No0000171]wpf 类层次结构Class Hierarchy
    [No0000160]常用C# 正则表达式大全
    [No000015D]【李笑来 笔记整理】个人商业模式升级
    thinkphp 系统变量
    thinkphp不读取.env文件的键对值
    thinkphp 模板变量输出替换和赋值
    thinkphp 视图view
    thinkphp 响应对象response
    Thinkphp 请求和响应
  • 原文地址:https://www.cnblogs.com/zhangyuhao/p/10489461.html
Copyright © 2011-2022 走看看