.NET基础2

简介: 引用类型有哪些方法比较相等性呢?栈集合和队列集合有啥子区别呢?泛型又有什么东西呢?

带着问题去思考!大家好

引用类型有哪些方法比较相等性呢?栈集合和队列集合有啥子区别呢?泛型又有什么东西呢?

首先关于第一个问题,.NET的引用类型有4种方法比较相等性,其中3个方法继承System.Object基类,另一个就是==运算符。一般System.Object的派生类重写了虚拟的Equals方法,用于比较对象状态值,并同时重写了GetHashCode方法,用于返回标识该类唯一性的散列码

三种方法分别是Equals,静态Equals方法和静态ReferenceEquals方法,由于基类库的类型都派生System.Object类,这三种方法都用来比较对象之间是否指向堆上的相同对象,比较的是引用地址,如果相等返回TRUE,他们直接有什么区别呢?

1)静态的ReferenceEquals方法可接受两个object参数,用于比较两个引用类型的引用类型地址是否相同,结果返回Ture,否则false,如果有一个引用类型为null,则返回false,两个引用类型均为null。则返回true,该方法为静态方法,无法被重写.当然两种值类型变量比较用这个肯定是毫无意义,肯定返回false,而且会装箱2

2)虚拟的Equals方法是实例方法,由实例直接调用,用于比较引用类型的引用地址是否相等,不过其派生类一般将其重写为比较对象的状态值,即基于值的引用

3)静态的Equals方法和虚拟的Equals方法一样,

委托

CLR能够保证委托指向一个有效的方法,不会指向无效地址或者越界地址,

https://www.cnblogs.com/hushzhang/p/5901052.html这篇文章介绍的不错,

泛型容器

在之前高性能里面提到过Stack<T>,但未做详细解说,这里给大家讲解下

首先statck表示对象的简单后进先出(LIFO)非泛型集合,但是实际开发过程中不建议使用,更多的可以用Stack<T>,在高性能集合上面我们也有讲解过。

Stack<T>表示相同类型的实例可变大小的后进先出集合,

使用场景:一般是临时数据,需要同时多个线程访问集合,

注意:当元素添加到Stack<T>时,将根据需要通过重新分配内部数组来自动增加容量,可以通过调用TrimExcess来减少容量。Stack<T>接受null作为引用类型的有效值,并允许重复元素。

 

 

相关文章
|
6月前
|
开发框架 网络协议 .NET
深入.net框架
深入.net框架
|
存储 JSON 安全
.NET 基础-3
服务端和客户端之间要传送的自定义数据类型
237 0
|
SQL C# 数据库
一起谈.NET技术,.NET远程处理框架详解
  第1章系统总体结构   1.1 总体结构   系统实现需要部署服务器端的远程对象(即一个DbServerLibrary.dll),服务器端要注册通道和该远程对象。客户端要实现一个本地查询的服务器,同时根据SQL解析的结果向各个服务器发送命令,并将结果显示在客户端界面,服务器端可以接受并显示相应的命令。
917 0
.NET简谈委“.NET技术”托链
  说起链表大家都很熟悉,说起委托相信大部分的.NET程序员都也很了解。在平时的开发过程中经常会用到这两种技术,只不过链表在.NET里面已经被封装了,让我们用起来更加的方便就是集合类型Collection。
693 0
.NET简谈面“.NET技术”向接口编程
  过程式的开发方式已逐渐退出大众的眼线,随之而来的是各种各样的高抽象的开发模式;我们不得不承认在没有设计模式的时候,我们很难总结出有价值的开发模型,便于以后重复使用和推广;面向对象的流行,让我们开发人员重新站在一个高的起点来看待软件模型,抽象固然是好事,但是也给初学者带来了迷惑,将软件中的东西都想成很简单的封装,我们只需要调用就行,这样越来越多的开发人员开始慢慢的往上浮,有一定编程经验和感触的人,能够明白我所说的浮,也算是给初学者提个醒吧。
921 0
|
网络协议
|
编解码 Linux 内存技术