当前位置: 首页 > news >正文

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

前言

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

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

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

我们可以看到,这是一个在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要精细一些

相关文章:

  • Lambda表达式使用介绍
  • 【Bootstrap5】Bootstrap5学习笔记
  • 数据库复习(第五版)- 第七章 数据库设计
  • 3.6c语言
  • 【算法系列】基数排序
  • 维度建模事实表技术基础解析(以电商场景为例)
  • 洛谷 P1480 A/B Problem(高精度详解)c++
  • 相机几何与标定:从三维世界到二维图像的映射
  • 【LeetCode101】对称二叉树
  • 逐梦DBA:MySQL的编码设置
  • PWM子系统芯片驱动源码pwm-tegra.c分析
  • leetcode15 三数之和
  • ruoyi框架接入kkFileView
  • 侯捷 C++ 课程学习笔记:深入理解C++内存管理与类对象构造全过程
  • 【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
  • 第005文-模拟入侵网站实现0元购
  • µCOS-III从入门到精通 第八章(时间片调度)
  • 点云 基于法线的双边滤波原理和过程
  • LeetCode hot 100—二叉树的最大深度
  • 能量石[算法题]
  • 以色列媒体:以总理称将接管整个加沙
  • 深一度|上座率连创纪录撬动文旅,中超可否复制大连模式
  • 蔡建忠已任昆山市副市长、市公安局局长
  • 有人倒卖试运营门票?上海乐高乐园:这些票存在无法入园风险
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 西班牙政府排除因国家电网遭攻击导致大停电的可能