我经常Tuple.Create
在Tuple
课堂上使用。现在我正在创建一个KeyValuePair
:
new KeyValuePair<string, MyAnnoyingButNecessarilyVerboseClass>(myString, myObj)
在这种情况下,我不想包含类型参数,因为它们使代码有点混淆了 IMO。我添加了以下内容来模仿Tuple.Create
for KeyValuePairs
。
public static class KVP
{
public static KeyValuePair<TKey, TValue> Create<TKey, TValue>(TKey key, TValue value)
{
return new KeyValuePair<TKey, TValue>(key, value);
}
}
所以我可以写
KVP.Create(myString, myObj)
不必显式包含类型参数,因为它们是从其他参数推断出来的。这很好用,我没有看到任何缺点。所以我有几个非常相关的问题。
- 为什么 C# 不包含
System.KeyValuePair
具有静态创建方法的非泛型类?(“他们没有这样做是因为他们不想将精力投入到提供很少价值的功能上”是一个完全可以接受且可以理解的答案) - 我错过了一个做类似事情的功能吗?
- 创建一个
KeyValuePair
我缺少的课程有缺点吗? - 有没有更简洁的方法来创建泛型
KeyValuePair
(除了明显缩短类和函数名:))?