[英]IEnumerable<T, int>, Arity and Generic Type Definitions
我有一個班級計數器 ,用鑰匙計算東西。 簡化:
public class Counter<T> {
private Dictionary<T, int> counts;
public void Increment(T key) {
int current;
bool exists = counts.TryGetValue(key, out current);
if (exists) {
counts[key]++;
} else {
counts[key] = 1;
}
}
}
它還有許多其他專門針對我需求的東西,但這才是最重要的。 到目前為止,它運作良好。
現在我想讓它在Linq查詢中使用(包含鍵和值)。 做到這一點,我想我需要實施
IEnumerable<T, int>
所以我補充說:
public class Counter<T> : IEnumerable<KeyValuePair<T, int>> {
// ...
IEnumerator<KeyValuePair<T, int>>
IEnumerable<KeyValuePair<T, int>>.GetEnumerator()
{
return ((IEnumerable<KeyValuePair<T, int>>)counts).GetEnumerator();
}
System.Collections.IEnumerator
System.Collections.IEnumerable.GetEnumerator()
{
return counts.GetEnumerator();
}
遺憾的是,這會導致編譯器錯誤
提供的泛型參數的數量不等於泛型類型定義的arity。 參數名稱:實例化
問題
更新 :錯字
我有一個拼寫錯誤,同時簡化我的代碼發布。 代碼實際上是在嘗試實現IEnumerable<KeyValuePair<T, int>>
而不是IEnumerable<T, int>
counts
字典,這是副作用。 以下是按鍵獲取項目計數的方法:
var counters = keyedData
.GroupBy(item => item.MyKey)
.ToDictionary(g => g.Key, g => g.Count());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.