zoukankan      html  css  js  c++  java
  • 每天学习一点.net(1) 4个共有的实例方法

    System.object类,为所有.net类的基类,它实现了4个公共实例方法:ToString,Equals,GetHashCode,GetType.

    1、Equals体现了对象的同一性(identity),而不是相等性(equality)。它的实现方法为:

    1 public class Object()
    2 {
    3       public virtual Boolean Equals()
    4     {
    5         if(this==obj)return true;
    6            return false;
    7 
    8     } 
    9 }    

    但是,这种实现方法效率是极低的,它需要比较其定义的任何字段。为了解决这个问题,

    Object提供了一个静态方法ReferenceEquals,原型为:

    public class Object()
    {
      public static boolean ReferenceEquals(Object obja,Object objb)
       {
           return(obj A==obj B);
        }
    }

    因此在检查同一性(即两个引用是否指向同个对象时),一定要调用这个ReferenceEquals,而不是调用Equals或者== 操作符

    2 System.Object的GetHashCode方法用于获得哈希值,它能获取任何对象的Int32哈希码。如果重写了Equals,就必须重写GetHashCode.简单地说,就是在System.Collections.Hashtable,System.Collections.Dictionary中,任何对象都是通过哈希桶(bucket)来查找,需要查找一个键时,首先要获取指定的键对象的哈希码,然后和哈希桶中的值进行比较,从而查找键值。因此,需要修改一个哈希表中的键对象时,首先应该移除键/值对,修改键对象,然后再将新的键/值添加回哈希表。

    internal sealed class point
    {
        private Int32 m_x,m_y;
       public override Int32 GetHashCode()
        {
           return m_x^m_y;
        }   
    }
  • 相关阅读:
    bzoj 2038 [2009国家集训队]小Z的袜子(hose)
    搭配飞行员
    codevs 1022 覆盖
    Tyvj-1338 QQ农场
    bzoj 3894 文理分科
    bzoj 1877 [SDOI2009]晨跑
    poj 3304 判断是否存在一条直线与所有线段相交
    poj 2318 向量的叉积二分查找
    poj 3608 凸包间的最小距离
    LA 4728 旋转卡壳算法求凸包的最大直径
  • 原文地址:https://www.cnblogs.com/marsblog/p/3107157.html
Copyright © 2011-2022 走看看