摘要: 首先先谈一下Equals()这个方法: Equals()方法,来自于Object,是我们经常需要重写的方法。此方法的默认实现大概是这样的: public virtual bool Equals(object obj) { if(obj==null) return false; if(GetType() != obj.GetType()) return false; Return... 阅读全文
posted @ 2017-12-04 23:42 迷雾千寻 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认为,重要的地方都差不多写到了,最后一篇决定把之前的内容全部整合起做一个综合的例子,然后简单的解释下IL指令的含义,及在内存中的变化如果你没有看前两篇请狂点这里 读懂IL代码就这么简单 (一) 读懂IL代... 阅读全文
posted @ 2017-12-04 14:20 迷雾千寻 阅读(808) 评论(0) 推荐(0) 编辑
摘要: 1、为什么需要扩展方法 .NET3.5给我们提供了扩展方法的概念,它的功能是在不修改要添加类型的原有结构时,允许你为类或结构添加新方法。 思考:那么究竟为什么需要扩展方法呢,为什么不直接修改原有类型呢? 首先,假设我们的项目中有一个类,后来过了一段时间,我们明确的知道需要为该类添加一个新功能,考虑这个需求有两个解决办法: (1)直接修改当前类的定义 这样做的缺点是,破坏向后的兼容性,可能以... 阅读全文
posted @ 2017-12-04 11:08 迷雾千寻 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 1. ReferenceEquals, == , Equals Equals , == , ReferenceEquals都可以用于判断两个对象的个体是不是相等。 a) ReferenceEquals ReferenceEquals是Object的静态方法,用于比较两个引用类型的对象是否是对于同一个对象的引用。对于值类型它总是返回false。(因为Box以后的对象总是不同的,hehe) b) ==... 阅读全文
posted @ 2017-12-04 09:44 迷雾千寻 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 本文阐述C#中相等性比较,其中主要集中在下面两个方面 ==和!=运算符,什么时候它们可以用于相等性比较,什么时候它们不适用,如果不使用,那么它们的替代方式是什么? 什么时候,需要自定一个类型的相等性比较逻辑 在阐述相等性比较,以及如何自定义相等性比较逻辑之前,我们首先了解一下值类型比较和引用类型比较 值类型比较对比引用类型比较 C#中的相等性比较有两种: 值类型相等,两个值在某种场景下相等 引... 阅读全文
posted @ 2017-12-04 09:00 迷雾千寻 阅读(554) 评论(0) 推荐(0) 编辑