【发布时间】:2019-02-03 07:22:17
【问题描述】:
此 C# 无法编译:
public class IdList<T> where T : IdList<T>.Item {
List<T> List = new List<T>();
public T this[int id] {
get => List[id];
set { }
}
public class Item {
public int id;
// Not shown: id used for equality and hash.
}
}
编译器的抱怨是:
“IdList”类型已经包含“Item”的定义
如果我注释掉索引器,它就会编译。
我怎样才能让它编译? Rider 没有fixit。
不时尚的解决方法是不要嵌套 Item 类。
IDE 是 Rider 2018.1.4,语言级别 7.2,在 macOS 上。
【问题讨论】:
-
有趣的是,将内部类
Item重命名为Foo... -
赞成教我 dotnet 的一个肮脏小秘密!
-
我对您的用例很感兴趣。你为什么要组织这样一个班级?也许现在还为时过早,我就无法确定您要完成的工作。但是,是的,索引器引入了一个名为“Item”的神奇属性,解决这个问题,你应该是金子
标签: c# inner-classes c#-7.2