因此,我正在将清单系统作为学校项目,并且我想为这些项目生成唯一ID,以便它将成为该特定项目的标识符。
是否有可能生成基于某些字段的ID,例如商品名称,价格,有效期。
是否可以使用一些现有的库?
是否有可能生成基于某些字段的ID,例如商品名称,价格,有效期。
是:哈希。
例如:
// It's very important to use `InvariantCulture ` and "o" to ensure consistent formatting on all computers
String infoText = item.Name + item.Price.ToString( "C2", CultureInfo.InvariantCulture ) + item.Expiration.ToString("o");
Byte[] infoBytes = Encoding.UTF8.GetBytes( infoText );
using( SHA256 sha = new SHA256Cng() )
{
Byte[] hash = sha.ComputeHash( infoBytes );
String hashText = Convert.ToBase64String( hash );
Console.WriteLine( "{0} = {1}", infoText, hashText )
}
散列(也称为“摘要”)对于相同的输入将始终是相同的,对于不同的输入将是不同的。
因此,如果您有一个包含价值10美元的苹果的SKU,该苹果将于2019-10-09到期,并且将其输入上述代码,那么它将生成一个唯一的代码,您可以使用该代码,而无需存储它们之间的映射SKU和该唯一代码(也称为“基于内容的寻址”)。
...因此,如果您遇到另外价值$ 10的苹果,这些苹果也将在2019-10-09到期,那么它将具有相同的唯一代码,即使它是一个不同的对象,并且您也不必记住您之前生成的唯一代码。
但是如果您遇到价值$ 10的梨在2019-10-09到期,或者价值$ 20的苹果在同一天也到期,则代码将不同。