C#核心(21)万物之父Object中的方法

前言

我们在先前已经学习过关于万物之父object的相关知识点,当时我们是和装箱拆箱合并在一起进行讲解的,现在我们就来对object里的方法进行一步讲解。

首先既然object里有方法,那么他肯定是类或者结构体。

我们在vs2022中输入objcet,然后鼠标对准object按下f12,可以看到这样一个界面。

C#核心(21)万物之父Object中的方法_第1张图片

我们可以看到,这是一个在system命名空间下的一个类,他的里面有一些这样那样的方法,具体是怎么使用呢。不急,我们一个个来讲。

1.静态方法

静态方法:Equals

作用 :判断两个对象是否相等

他的根本工作逻辑其实是判断两个对象的引用地址是否一样,最终的判断权,交给左侧对象的equals方法,不管值类型还是引用类型都会按照左侧对象Equals方法来进行比较。

后面还有一个同名的虚方法,需要甄别,一个是obejct用来比较两个参数的,一个是子类点出来比较实用的。

然后我们看个例子,顺便复习你也可以在脑海中复习一下引用类型和值类型的区别。
 

using System;

public class Person
{
    public string Name;
    public int Age;
}

class Program
{
    static void Main(string[] args)
    {
        Person person1 = new Person { Name = "Alice", Age = 30 };
        Person person2 = new Person { Name = "Alice", Age = 30 };
        Person person3 = person1; // 引用相同的对象  
        bool areEqual5 =true;
        // 使用Object.Equals方法比较对象  
        bool areEqual1 = Object.Equals(person1, person2); // false,引用不同  
        bool areEqual2 = Object.Equals(person1, person3); // true,引用相同  
        bool areEqual3 = Object.Equals(person1, null);     // false,person1不是null  
        bool areEqual4 = Object.Equals(1, 1);         // true,两个都是1,equals才能判断 
        if(person1!=null)
        {
            areEqual5 = person1.Equals(person2);//false,展示使用方法
        }
        

        // 输出结果  
        Console.WriteLine($"person1 和 person2 相等: {areEqual1}");
        Console.WriteLine($"person1 和 person3 相等: {areEqual2}");
        Console.WriteLine($"person1 和 null 相等: {areEqual3}");
        Console.WriteLine($"1 和 1 相等: {areEqual4}");
    }
}

静态方法:ReferenceEquals

作用:主要用来比较是否是相同的引用,主要用来比较引用类型的对象

他其实和Eqauls虚方法差别不大,都是检查引用类型的,但是其实这里有一点细微的区别,Equals虚方法是可以重写的,但是RederenceEquals是不支持的。而且Equals虚方法本身的比较逻辑也比ReferenceEquals要精细一些

你可能感兴趣的:(#,C#核心,c#,开发语言)