提问人:draz 提问时间:11/17/2023 更新时间:11/17/2023 访问量:44
为什么没有 KeyValuePair<> 实现的接口 IKeyValuePair<>?[关闭]
Why is there no interface IKeyValuePair<> which is implemented by KeyValuePair<>? [closed]
问:
我有一个可以实现 IKeyValuePair<> 接口的类,因此处理函数也可以在其他 KeyValuePairs 上运行,所以我想知道为什么没有 KeyValuePair 的接口<>它抽象出来。 有什么缺点吗?
interface IKeyValuePair<K, V>
{
public K Key { get; }
public V Value { get; }
}
class MyClass : IKeyValuePair<DateTime, double>
{
public DateTime Key { get; }
public double Value { get; }
}
void MyFunction(IEnumerable<IKeyValuePair<DateTime,double>> data)
{
// let's do something smart!
}
void Main()
{
MyFunction(new List<MyClass>());
MyFunction(new Dictionary<DateTime, double>());
}
当然,可以使用 Linq 进行转换:
void MyFunction2(IEnumerable<KeyValuePair<DateTime,double>> data)
{
// let's do something smart!
}
void Main()
{
var list = new List<MyClass>();
var kvps = list.Select(x => new KeyValuePair<DateTime, double>(x.Key, x.Value) );
MyFunction2( kvps );
}
但它看起来像一个很大的开销......
答:
0赞
Xavier J
11/17/2023
#1
该类是密封的,因为它不应该只是一个键值对。Pair 表示 TWO,如在两个属性中 -- 和 。如果可以从该类继承并添加更多属性,则它将不再是一对。KeyValuePair
Key
Value
这同样适用于您建议的接口。
评论
(DateTime key, double value)