zoukankan      html  css  js  c++  java
  • 10.了解GetHashCode()

    1、对于引用类型,GetHashCode()函数返回当前对象的ID。(对象的ID在对象创建时自动分配)

    2、对于值类型,GetHashCode()返回类型的第一个字段的散列值。

        public struct MyStruct
        {
         private string _msg;
         private int _id;
         private DateTime _epoch;
        }

        从  MyStruct      对象上返回的散列值是从该对象的   _msg                成员上生成的。下面的代码片断总是返回 true
        MyStruct s = new MyStruct( );
        return s.GetHashCode( ) == s._msg.GetHashCode( );

        概括一个默认的行为,Object.GetHashCode()可以正确的在引用类型上工作,尽管它不是必须保证一个高效
        的分布 。 如果你有一个对                 的   操作符的重载,你会破坏                          。
                 (              Object  ==                       GetHashCode())  ValueType.GetHashCode()
        仅在你的结构的第一个字段是只读的时候才能正确工作。而当你的结构的第一个字段的值,复盖 了它所能
        接受 的输入 的有意义的子集时,ValueType.GetHashCode()就可以保证一个高效的散列值

     GetHashCode()具有很特殊的要求:相等的对象必须产生相等的散列值,并且散列值必须是对象不变的,并
        且是均衡的高效分布 。所有这些只有对恒定类型才能满足 译注 :本文前面已经说过了,                                                 框架中的
                                                                 (                             .Net
                                    其实并不满足均衡高效分布这一规则  。对于其它类型 ,就交给默认的行为
        System.Object.GetHashCode()                                     )
        吧,知道它的缺点就行了。

  • 相关阅读:
    scss使用指南--每天一点
    Egret引擎开发基础(一)
    vue-awesome-swiper使用自动轮播和循环轮播不生效(loop和autoplay)
    Vue项目中title的设置,使用document.title返回时不生效
    charles系列破解激活注册码
    Vscode中vue项目中无法对js进行提示
    JS数组与对象的遍历方法大全
    手把手教你用webpack3搭建react项目(开发环境和生产环境)(二)
    服务器安装redis-stat和easyNmon
    Shell备份数据库
  • 原文地址:https://www.cnblogs.com/movemoon/p/2736103.html
Copyright © 2011-2022 走看看