我正在尝试解决编译器警告:
Type parameter 'TKey' has the same name as the type parameter from outer type 'Common.Core.ObservableDictionary<TKey,TValue>'
这是有问题的代码:
protected class KeyedDictionaryEntryCollection<TKey> : KeyedCollection<TKey, DictionaryEntry> {
public KeyedDictionaryEntryCollection() {}
public KeyedDictionaryEntryCollection(IEqualityComparer<TKey> comparer) : base(comparer) {}
protected override TKey GetKeyForItem(DictionaryEntry entry) {
return (TKey) entry.Key;
}
}
它显示了第一个TKey。
我该如何解决这个问题?代码工作正常,但我正在努力解决所有编译器警告。
答案 0 :(得分:9)
这是因为这是泛型类中的内部类。编译器警告您使用与外部类规范相同的名称,这有效地“隐藏”了它。您可以通过消除内部类的规范来删除它,因为它不需要(除非您想引入新的泛型类型):
class ObservableDictionary<TKey,TValue>
{
// This class already knows about TKey and TValue since it's an inner class in the "outer" generic class
protected class KeyedDictionaryEntryCollection : KeyedCollection<TKey, DictionaryEntry>
{
// Your existing code, as is...
}
}