C# 关于相等

查看判断两个对象是否是同一个对象要用:object.ReferenceEquals();
因为object“”默认值是比较两个对象是不是同一个对象。所以有时候两个对象的内容相等,但是比较后还是false。
Object的Equals方法也比较两个变量指向的是否同一个对象;对象如果override 了Equals方法,就可以进行内容的相同比较。
默认情况下
不是调用Equals方法,需要重载运算符;
String等这些类是重写了Equals方法。
面试题:下面的代码有几个字符串对象
String s1 = "abc";
string s2 = s1;
string s3 = new String(new char[] {‘a‘,‘b‘,‘c‘ });
Console.WriteLine(s1
s3);//输出true(虽然这里s1和s3不是同一个对象,但由于string重写了Equals方法,只要内容相等也返回true)
答案:两个字符串对象

     class Program
      {
        static void Main(string[] args)
        {
            Person p1 = new Person() { Name = "xu", Age = 12 };
            Person p2 = p1;
            Person p3 = new Person() { Name = "xu", Age = 12 };

            //查看判断两个对象是否是同一个对象要用:object.ReferenceEquals();

            Console.WriteLine(object.ReferenceEquals(p1, p2));//true
            Console.WriteLine(object.ReferenceEquals(p1, p3));//false
            p1.Equals(p2);//true
            p1.Equals(p3);//true
            Console.ReadKey();
        }
    }
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public override bool Equals(object obj)
        {
            if(! (obj is Person))
            {
                return false;
            }
            else
            {
                Person that = (Person)obj;
                if(that.Name==this.Name&& that.Age==this.Age)
                {
                    return true;
                }else
                {
                    return false;               
                }

            }
        }
    }

C# 关于相等

上一篇:C# TreeNode的属性及使用方法


下一篇:elasticsearch算法之词项相似度算法(二)