关于随机数法

.Net技术 码拜 9年前 (2016-02-24) 1057次浏览
这段代码为什么行不通  该怎么改进,关键是这个键怎么不在字典中呢,本人昨天想了很长时间,假如太复杂就不用写了 跟本人说一声太复杂就行了   能改的则帮本人改一改GetHashCode()用随机数法。谢谢了 尽量写的简单一点 让本人看明白就行了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace delete
{
class a
{
public int Id { get; private set; }
public a(int i)
{
Id = i;
}
public override bool Equals(object obj)
{
Console.WriteLine(“Equals”);
if (obj == null || GetType() != obj.GetType())
{
return false;
}

return Id == ((a)obj).Id;
}
 static Random dd = new Random();
        public override int GetHashCode()
{
Console.WriteLine(“GetHashCode”);
 Id = dd.Next();
             return Id ;
}
}
class Program
{
static void Main(string[] args)
{
var o1 = new a(1);
var o2 = new a(2);
var o3 = new a(1);
var dic = new Dictionary<a, object>();
dic.Add(o1, 123);
dic.Add(o3, 123);
Console.WriteLine(dic[o1].GetHashCode());
Console.WriteLine(dic[o3].GetHashCode());
Console.WriteLine(“分隔符”);
Console.WriteLine(dic.ContainsKey(o2));
Console.WriteLine(“分隔符”);
Console.WriteLine(dic.ContainsKey(o3));
Console.WriteLine(o3.GetType());
Console.WriteLine(dic[o3]);
}
}
}

解决方案

25

Quote: 引用 6 楼 weikeli19 的回复:

本人这个不是随便臆造的  本人没这个本事 呵呵   本人有依据的  本人给你看  这个网页http://www.cnblogs.com/CBDoctor/p/4080217.html[/qu
ote]
好嘛,您又把事情弄拧了
你那个连接是描述 哈希值 是怎么产生的
而你的代码中只是使用已有的值,而不是产生


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于随机数法
喜欢 (0)
[1034331897@qq.com]
分享 (0)