C# Object 类

7e8a7789fa9c72307941d0d6ebaa9a29.png

实际上,如果在定义类时没有指定基类,编译器就会自动假定这个类派生自 Object 。下面文章没有使用继承,每个类都派生自 System.Object (对于结构,这个派生是间接的:结构总是派生自 System.ValueType,System.ValueType 又派生自System.Object)。

其实际意义在于,除了自己定义的方法和属性等外,还可以访问为 Object 类定义的许多公有的和受保护的成员方法。这些方法可用于自己定义的所有其他类中。

下面将简要总结每个方法的作用:

1

ToString()方法:是获取对象的字符串表示的一种便捷方式。当只需要快速获取对象的内容,以进行调试时,就可以使用这个方法。在数据的格式化方面,它几乎没有提供选择:例如,在原则上日期可以表示为许多不同的格式,但 DateTime.ToString() 没有在这方面提供任何选择。如果需要更复杂的字符串表示,例如,考虑用户的格式化首选项或区域性,就应实现 IFormattable 接口。

2

GetHashCode()方法:如果对象放在名为映射(也称为散列表或字典)的数据结构中,就可以使用这个方法。处理这些结构的类使用该方法确定把对象放在结构的什么地方。如果希望把类用作字典的一个键,就需要重写 GetHashCode()方法。实现该方法重载的方式有一些相当严格的限制。

3

Equals()(两个版本)和 ReferenceEquals()方法:注意有 3 个用于比较对象相等性的不同方法,这说明 .NET Framework 在比较相等性方面有相当复杂的模式。这 3 个方法和比较运算符 “==” 在使用方式上有微妙的区别。而且,在重写带一个参数的虚 Equals() 方法时也有一些限制,因为 System.Collections 名称空间中的一些基类要调用该方法,并希望它以特定的方式执行。

4

Finalize()方法:它最接近 C++风格的析构函数,在引用对象作为垃圾被收集以清理资源时调用它。Object 中实现的 Finalize() 方法实际上什么也没有做,因而被垃圾收集器忽略。如果对象拥有对非托管资源的引用,则在该对象被删除时,就需要删除这些引用,此时一般要重写 Finalize()。垃圾收集器不能直接删除这些对非托管资源的引用,因为它只负责托管的资源,于是它只能依赖用户提供的 Finalize()。

5

GetType()方法:这个方法返回从 System.Type 派生的类的一个实例,因此可以提供对象成员所属类的更多信息,包括基本类型、方法、属性等。System.Type 还提供了 .NET 的反射技术的入口点。

6

MemberwiseClone()方法:它在概念上相当简单,它只复制对象,并返回对副本的一个引用(对于值类型,就是一个装箱的引用)。注意,得到的副本是一个浅表复制,即它复制了类中的所有值类型。如果类包含内嵌的引用,就只复制引用,而不复制引用的对象。这个方法是受保护的,所以不能用于复制外部的对象。该方法不是虚方法,所以不能重写它的实现代码。

欢迎关注公众号: dotnet编程大全

技术群: 需要进技术群的添加小编微信mm1552923,备注:加群;

往期推荐

caeaed42e859f8baffa5feb4e26534d9.png

Love life,love yourself

关注小编不迷路呦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值