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

C#-objetc中的方法

object:万物之父、所有类的基类、引用类型、可利用里氏替换原则装载一切对象、存在装箱拆箱

一:object中的静态方法:

1.1 Equals()

Equals():判断两个对象是否相等。

最终的判断权,交给左侧对象的Equals方法。即不管值类型引用类型都会按照左侧对象Equals方法的规则来进行比较

class Test{public override bool Equals(object obj){return base.Equals(obj);}
}
--------------------------------------------------
Console.WriteLine(Object.Equals(1, 1));//判断值类型的值是否相等
----------------
Test t = new Test();
Test t2 = new Test();
Console.WriteLine(Object.Equals(t, t2));//判断引用类型的地址是否相等
1.2 ReferenceEquals()

比较两个对象是否是相同的引用,主要是用来比较引用类型的对象。

值类型对象返回值始终是false.

Console.WriteLine(Object.ReferenceEquals(t, t2));
//代码中的Object可省略。Object是所有类的基类,则可默认所有类中都有该方法

二:object在的成员方法

2.1 GetType()

反射中重要方法。主要用于获取对象运行时的类型Type。

通过Type结合反射相关知识点可以做很多关于对象的操作。

Test t = new Test();
Type type = t.GetType();
2.2 MemberwiseClone()

用于获取对象的浅拷贝对象,即返回一个新的对象

注意:新对象中的引用变量会和老对象中一致。

该方法是被保护的,只能在子类中调用

class Test{public int i = 1;public Test2 t2 = new Test2();public Test Clone(){ //该方法是被保护的,只能在子类中调用return MemberwiseClone() as Test;}
}
class Test2{public int i = 2;
}
-------------------------------------------------------------
Test t = new Test();
Test tc = t.Clone();
Console.WriteLine("克隆对象后");
Console.WriteLine("t.i = " + t.i);//1
Console.WriteLine("t.t2.i = " + t.t2.i);//2
Console.WriteLine("tc.i = " + tc.i);//1
Console.WriteLine("tc.t2.i = " + tc.t2.i);//2tc.i = 20;
tc.t2.i = 21;
Console.WriteLine("改变克隆体信息后");
Console.WriteLine("t.i = " + t.i);//1
Console.WriteLine("t.t2.i = " + t.t2.i);//21原体发生变化,原体和克隆体存储同一地址
Console.WriteLine("tc.i = " + tc.i);//20
Console.WriteLine("tc.t2.i = " + tc.t2.i);//21

三:object中的虚方法

3.1 Equals()

默认实现还是比较两者是否为同一个引用,即相当于ReferenceEquals。

但是微软在所有值类型的基类System.ValueType中重写了该方法,用来比较值相等。

我们也可以重写该方法,定义自己的比较相等的规则

3.1 GetHashCode()

获取对象的哈希码

哈希码:一种通过算法算出的,表示对象的唯一编码,不同对象哈希码有可能一样,具体值根据哈希算法决定

我们可以通过重写该函数来自己定义对象的哈希码算法,正常情况下,我们使用的极少,基本不用。

3.3 ToString()

返回当前对象代表的字符串,我们可以重写它定义我们自己的对象转字符串规则,

public override string ToString(){return "重写了.ToString()";
}

总结:

1.虚方法 ToString() 自定字符串转换规则

2.成员方法 GetType() 反射相关

3.成员方法 MemberwiseClone() 浅拷贝

4.虚方法 Equals() 自定义判断相等的规则


http://www.mrgr.cn/news/70645.html

相关文章:

  • 搭建Python2和Python3虚拟环境
  • 小程序服务商常见问题
  • Rust学习(二):rust基础语法Ⅰ
  • 地区级的可视化地图不设计,进来看看超炫的样式吧
  • 搜索引擎的演变与未来发展趋势分析
  • 一个简单ASP.NET购物车设计
  • mysql数据库(四)单表查询
  • 20241111_室内定位
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • 应用系统开发(4)CMOS 模拟开关芯片HCF4053BE
  • CS144_01
  • 快手推出可灵AI独立APP,视频美学表达和运动表现持续领先
  • tiktok 用户主页接口API服务
  • 【Vue3】基础语法案例
  • Unity学习笔记(3):场景绘制和叠层设置 Tilemap
  • CCI3.0-HQ:用于预训练大型语言模型的高质量大规模中文数据集
  • 剖析源码,带你看懂JUC线程池运行机制
  • [ Linux 命令基础 2 ] Linux 命令详解-系统管理命令
  • Qt | QMediaPlayer+QGraphicsVideoItem视频播放器
  • 无线局域网四种类型
  • 图论算法:最短路径算法详解【c语言版】(无权最短路径、Dijkstra算法)
  • Mysql 基础语法
  • Java API类与接口:类的转换方法与正则表达式
  • 自动驾驶安全方向论文阅读
  • Tomcat(9) web.xml文件的作用
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-20