我通常使用KeyValuePair<TKey,TValue>
每当我有成对相关的数据时,就键入一个数据,即一个数据是另一个数据的关键。如果数据不相关,则 Tuple<T1,T2>
type 更有意义,我会同意。
现在我刚刚读了this article关于为什么通常要避免KeyValuePair<TKey,TValue>
并更喜欢 Tuple<T1,T2>
。主要论点是 Tuple<T1,T2>
的性能优势.
除了性能之外,KVP 是否比 Tuple<T1,T2>
更好? ?
最佳答案
首先,该类型可能被认为命名不当。命名的 KeyValuePair 应表示一个键和一个值。如果您的两个对象实际上并不是键和值,而只是两个东西怎么办?如果我看到一个类型为 KeyValuePair<TKey, TValue>
的方法或属性,我希望 KVP 的值是一个键和一个值。这实际上只是沟通意图并在将来向自己或其他团队成员明确说明的问题。元组并不表示这种关联。
元组还可以更轻松地添加另一个值,使其成为 3 元组(或三元组,无论您如何调用它)。某些 .NET 语言,例如 F#、have special syntax也围绕元组。
从实现角度来看,Tuple
做很多事情KeyValuePair
才不是。元组是可比较的,它们实现 IComparable
和IStructuralEquatable
接口(interface),因此可以更轻松地比较两个元组。
关于.net - 什么时候使用 Tuple 和 KeyValuePair 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522422/