【发布时间】:2018-12-18 10:31:38
【问题描述】:
我想这可能是一本方便的字典:
var myDict = new Dictionary<(int, int), bool>();
哈希会是什么样子?
等效的键类型(结构)是什么样的?
【问题讨论】:
-
更简单的方法是使用字符串连接。 int[] 输入 = { 1, 2, 3 };字符串键 = string.Join("^",input.Select(x => x.ToString()));
-
@jdweng 如果您关心分配,那将是一个糟糕的主意
-
@MarcGravell:你什么意思?
-
@jdweng 我的意思是:您现在每次想要存储或检索一个值时都分配一个字符串 - 这在许多系统中是一个 巨大 问题。与使用 value-tuple 作为 key 相比,它在分配方面基本上是免费的。
-
@jdweng:没有理由这样做:您分配了大量不必要的数据(字符串连接),您花时间使用当前文化创建单个对象的字符串表示,然后您花更多的时间评估它们的相等性(valuetype.equals 是微不足道的),最后使用分隔符连接字符串表示通常是一个坏主意,因为您需要确保不会意外创建键冲突。
ValueTuple是一个结构体,另一方面,没有分配,没有 GC,简单的相等性检查。
标签: c# dictionary valuetuple