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()                                     )
        吧,知道它的缺点就行了。

  • 相关阅读:
    mysql报错:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
    MD5登陆密码的生成
    15. 3Sum、16. 3Sum Closest和18. 4Sum
    11. Container With Most Water
    8. String to Integer (atoi)
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    几种非线性激活函数介绍
    AI初探1
    AI初探
  • 原文地址:https://www.cnblogs.com/movemoon/p/2736103.html
Copyright © 2011-2022 走看看