C# 为什么类X可以从集合继承<;X>;

C# 为什么类X可以从集合继承<;X>;,c#,recursion,collections,C#,Recursion,Collections,我刚刚研究了类的实现,比如JToken,我注意到它继承自List 我以前从未见过类从列表中继承,所以在阅读了“Avi Turners”之后,我对这个问题的答案是:我有点理解了。我可以理解,让类成为一个集合并重写collection的方法给它们自己的实现可能会很好 因此,我创建了几个虚拟类,试图了解.net将允许我做什么。于是我写道: public class A : Collection<A> { public int @Integer { get;

我刚刚研究了类的实现,比如
JToken
,我注意到它继承自
List

我以前从未见过类从列表中继承,所以在阅读了“Avi Turners”之后,我对这个问题的答案是:我有点理解了。我可以理解,让类成为一个集合并重写
collection
的方法给它们自己的实现可能会很好

因此,我创建了几个虚拟类,试图了解.net将允许我做什么。于是我写道:

    public class A : Collection<A>
    {
        public int @Integer { get; set; }
        public string @String { get; set; }

        public void Remove(int index)
        {
            RemoveItem(index);
        }

        protected override void RemoveItem(int index)
        {

        }
    }

    public class B
    {
        public B()
        {
            var a = new A
            {
                new A(),
                new A()
            };

            a.Integer = 1;
            a.String = "";

            var firstItem = a[1];

            a.Remove(2);
        }
    }
公共A类:集合
{
public int@Integer{get;set;}
公共字符串@string{get;set;}
公共无效删除(整型索引)
{
删除项目(索引);
}
受保护的覆盖void removietem(int索引)
{
}
}
公共B级
{
公共图书馆B()
{
var a=新a
{
新的A(),
新A()
};
a、 整数=1;
a、 字符串=”;
var firstItem=a[1];
a、 移除(2);
}
}
这确认了它将允许继承自身的列表。这我不明白。为什么我可以有一个可以分配属性的类,而A也是一个可以添加A元素的列表(这些新实例也可以是列表,或者只是一个集合)

难道不应该有一个类a只是一个类,而另一个类是一个集合(例如
公共类a集合:集合

我无法想象这在哪里是必要的,那么为什么它不显示错误呢

我意识到我可能从错误的角度看待这个问题,并且使用它是完全错误的。但是我找不到太多的资源,而且似乎没有一个有用

有人能举例说明为什么这是有用的/允许的吗


谢谢。

别为这样一个怪胎所困。它没有多大用处,也不会让你的意图更清晰。事实上,最好将
A类
A类集合:ICollection
分开,原因很多很多

你们已经发现了一种形式的。(我最喜欢的名字是一个模式!)注意:C版本不是真正的C++,但是它确实有相似之处。谢谢,我会给你读的。谢谢。我也来看看。