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

c#object类中方法的使用

C#中的Object类是所有类的基类,它定义了一些通用的方法和属性,可以在任何对象上使用。以下是Object类中常用的方法和属性的使用
1.ToString():将对象转换为字符串表示形式。

string str = obj.ToString();

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

bool isEqual = obj1.Equals(obj2);

3.GetHashCode():获取对象的哈希码。

int hashCode = obj.GetHashCode();

4.GetType():获取对象的类型。

Type type = obj.GetType();

5.MemberwiseClone():创建当前对象的浅表副本

object clone = obj.MemberwiseClone();

6.ReferenceEquals():判断两个对象的引用是否相等。

bool isSameReference = object.ReferenceEquals(obj1, obj2);

以下是一个示例代码,演示了如何使用Object类的方法和属性:

class MyClass
{//重写父类object的tostring()方法,默认输出(namespce+classname)public override string ToString(){return "This is MyClass";}//重写父类equals方法,默认和==功能一样,值类型比较值是否相等,引用类型比较引用地址是否相同,string 比较字符串内容是否相同。public override bool Equals(object obj){if (obj == null || GetType() != obj.GetType()){return false;}MyClass other = (MyClass)obj;// 判断两个对象的特定属性是否相等return this.Property == other.Property;}public override int GetHashCode(){return this.Property.GetHashCode();}public string Property { get; set; }
}class Program
{static void Main(string[] args){MyClass obj1 = new MyClass { Property = "Value1" };MyClass obj2 = new MyClass { Property = "Value2" };// 调用ToString()方法Console.WriteLine(obj1.ToString());// 调用Equals()方法bool isEqual = obj1.Equals(obj2);Console.WriteLine(isEqual);// 调用GetHashCode()方法int hashCode = obj1.GetHashCode();Console.WriteLine(hashCode);// 调用GetType()方法Type type = obj1.GetType();Console.WriteLine(type.Name);// 调用MemberwiseClone()方法MyClass clone = (MyClass)obj1.MemberwiseClone();Console.WriteLine(clone.Property);// 调用ReferenceEquals()方法bool isSameReference = object.ReferenceEquals(obj1, obj2);Console.WriteLine(isSameReference);}
}

注意:Object类中的Equals()方法判断两个对象是否相等,默认使用的是引用相等比较。如果需要自定义相等性的判断逻辑,可以在类中重写Equals()方法。同时,还可以重写==和!=运算符来实现相等性比较

http://www.lryc.cn/news/153176.html

相关文章:

  • 三种常用盒子布局的方法
  • GB28181学习(二)——注册与注销
  • 【Linux】线程安全-信号量
  • 数字IC验证——PSS可移植测试用例
  • java设计模式---策略模式
  • 5-redis集群搭建安装
  • (数字图像处理MATLAB+Python)第十一章图像描述与分析-第七、八节:纹理描述和其他描述
  • MySQL提权
  • FPGA优质开源项目 – UDP万兆光纤以太网通信
  • 如何中mac上安装多版本python并配置PATH
  • window 常用基础命令
  • lintcode 1815 · 警报器 【simple vip 前缀和数组】
  • 【强化学习】MDP马尔科夫链
  • SpringBoot自写项目记录
  • Windows10上使用llama-recipes(LoRA)来对llama-2-7b做fine-tune
  • 06-限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景?【Java面试题总结】
  • 2021年06月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Tuxera NTFS for Mac2023苹果电脑Mac硬盘读写工具
  • 系统调用的过程
  • Python将多个文件的名称或后缀名由大写字母修改为小写的方法
  • Debezium的三种部署方式
  • 通讯协议057——全网独有的OPC HDA知识一之接口(十二)IOPCHDA_DataCallback
  • 后端SpringBoot+前端Vue前后端分离的项目(一)
  • docker 安装 MySQL5.7
  • 分布式session的4种解决方案
  • SQL Server2008下载地址
  • MySQL函数和约束
  • 关于一个git的更新使用流程
  • vue 对后端返回字段值为null的变成空字符串
  • C++,菱形继承和虚继承