委托的散列值? 本帖最后由 gqqnb 于 2010-10-21 21:51:44 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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()); GetHashCode() 是把对应的值,通过散列算法,变换成固定长度的输出,该输出就是散列值.不同的输入可能会散列成相同的输出.对象相等则hashCode一定相等 对象相等,那string s="nihao"和string x="hello"的散列值相同了?你是不是说要看内容啊?那Del1 d1 = () => { Console.WriteLine("hello"); };Del1 d11 = () => { Console.WriteLine("Word"); };的内容明显不同啊,散列值还相同。 windows窗体程序 多用户下定时刷新问题 控件里变量的问题 新闻循环滚动的问题 看看我写的socket有没有错误???????????? sql server中添加中文的问题 请问把某行代码注释掉的快捷键是什么? 如何伪造ip 一个问题,高手请进 WPF,这种数据绑定怎么写? 关于C#的一些问题 用C#取单精度数组中的最小值时出错。。。大侠帮帮忙吧。 SOCKET编程
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());
不同的输入可能会散列成相同的输出.
对象相等则hashCode一定相等
Del1 d1 = () => { Console.WriteLine("hello"); };
Del1 d11 = () => { Console.WriteLine("Word"); };
的内容明显不同啊,散列值还相同。