我有一种情况,我需要在'实体'之间创建某种独特性,但它不是GUID,并且它不会保存在数据库中(但它是保存的。不是由数据库保存)。
密钥的基本用法仅仅是冗余检查。它不必像真正的“主键”一样可扩展,但用我能想到的最简单的术语来说,这就是它的工作原理。
[receiver]
有List<possibilities>
。
possibilities
独立存在,但许多将具有相同的值(无法预测。这是设计)
possibilities
的接收器列表通常必须清空然后重新填充(这是业务要求)。
该密钥主要用于添加非常轻量级的冗余检查。换句话说,有时会重复相同的可能性,有时它只应出现在接收者列表中一次。
我基本上想要使用非常简单的东西。字符串就足够了。我只是想找出一个适度的算法来实现这一目标。我想过使用GetHashCode()
方法,但我不确定它是多么可靠。我可以得到一些想法吗?
答案 0 :(得分:0)
尝试使用此方法生成Guid。
生成UUID / GUID的VBScript函数
如果您使用的是Windows,则可以使用下面的简单VBScript生成UUID。只需将代码保存到名为createguid.vbs的文件中,然后在命令提示符下运行cscript createguid.vbs。
Set TypeLib = CreateObject("Scriptlet.TypeLib")
NewGUID = TypeLib.Guid
WScript.Echo(left(NewGUID, len(NewGUID)-2))
Set TypeLib = Nothing
通过Windows命令行创建UUID / GUID
If you have the Microsoft SDK installed on your system, you can use the utility uuidgen.exe, which is located in the "C:\Program Files\Microsoft SDK\Bin" directory
或尝试相同以获取更多信息。
我想说的是Windows命令行,因为它更可靠。
答案 1 :(得分:0)
如果你可以乍一看使用GetHashCode(),你也可以使用MD5哈希,获得更少的冲突概率。生成的MD5可以通过编码基础64存储为24个字符串字符串,让我们看看这个例子:
public static class MD5Gen
{
static MD5 hash = MD5.Create();
public static string Encode(string toEncode)
{
return Convert.ToBase64String(
hash.ComputeHash(Encoding.UTF8.GetBytes(toEncode)));
}
}
这样你就可以用字符串格式在md5哈希中编码源字符串。你只需要用字符串来写“可能性”类。