本帖最后由 gqqnb 于 2010-10-21 21:51:44 编辑

解决方案 »

  1.   

    1) 
    Delegate重写了GetHashCode方法public override int GetHashCode()
    {
        return base.GetType().GetHashCode();
    }第一行和第二行相同的委托类型,因此HashCode一样
    2)单纯一个lamda表达式,不能作为对象.
    但可以用lamda表示式初始化一个对应的委托类型对象
    比如Action委托
    其构造函数
    Acion(void() target);
    对于void(),编译器不能认为是一个对象.
    但这样就可以
    Console.WriteLine(new Action(() => { Console.WriteLine("hello"); }).GetHashCode());
     
      

  2.   

    GetHashCode() 是把对应的值,通过散列算法,变换成固定长度的输出,该输出就是散列值.
    不同的输入可能会散列成相同的输出.
    对象相等则hashCode一定相等
      

  3.   

    对象相等,那string s="nihao"和string x="hello"的散列值相同了?你是不是说要看内容啊?那
    Del1 d1 = () => { Console.WriteLine("hello"); };
    Del1 d11 = () => { Console.WriteLine("Word"); };
    的内容明显不同啊,散列值还相同。