-1
在64位.NET 4.5平台上,是否有计算字符串的GetHashCode()方法在32位上的结果.NET 4.5平台?64位.NET 4.5上的32位GetHashCode(CLR)
这显然不是一个好主意。这已被询问并解释here和here。只有一个答案说如何做到这一点将被接受。
在64位.NET 4.5平台上,是否有计算字符串的GetHashCode()方法在32位上的结果.NET 4.5平台?64位.NET 4.5上的32位GetHashCode(CLR)
这显然不是一个好主意。这已被询问并解释here和here。只有一个答案说如何做到这一点将被接受。
GetHashCode()
不是32位或64位特定的,因此在32位系统上调用它与在64位系统上调用它相同。
看来你正试图重用哈希码来实现某种序列化目的。你无法可靠地做到这一点。如果它更容易,请将字符串GetHashCode()
函数视为以下内容。
static Dictionary <string, int> HashCodes = new Dictionary<string, int>();
static Random Rand = new Random();
static int PsudoGetHashCode(string stringInQuestion)
{
lock(HashCodes)
{
int result;
if(!HashCodes.TryGetValue(stringInQuestion, out result)
{
result = Rand.Next();
HashCodes[stringInQuestion] = result;
}
return result;
}
}
你只能保证获得相同的GetHashCode()
值每程序的运行相同的字符串,如果你关闭程序并重新打开它,你可以很可能获得新的价值。
,会给你可靠的结果,你唯一的办法就是解决您的数据库不存储内置GetHashCode()
从.NET
你为什么想知道如何做到这一点的设计? 'GetHashCode()'只对程序的一次运行(在单个应用程序域中)是确定性的。我不明白你的问题与你连接的两个人有什么不同,答案是“你不能”。 –
应用程序正在运行的数据库需要它。这是原始开发人员做出的糟糕的设计决定。知道这个问题的答案将是解决它的最简单的方法。 – Joshcodes
请不要编辑问题的答案。这个问题是获得投票重新打开。我正在寻找自己投票的方式,也许。 –