zoukankan      html  css  js  c++  java
  • .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作为引用类型的有效值,并允许重复元素。

     

  • 相关阅读:
    [HDU 1003] Max Sum
    Codeforces
    2016 年宁波工程学院第七届ACM校赛题解报告
    [DP] Light Oj 1017 Brush(III)
    GDUT-校赛-积水积木
    1031 Hungar的得分问题(二)
    HDU 1506 Largest Rectangle in a Histogram
    lightoj 1033 Generating Palindromes
    网络编程总结
    生产者消费者模型
  • 原文地址:https://www.cnblogs.com/ccaa/p/12553425.html
Copyright © 2011-2022 走看看