C# 从集合继承T<;T>;

C# 从集合继承T<;T>;,c#,generics,inheritance,C#,Generics,Inheritance,我遇到了以下从泛型集合继承的用法 class Model : Collection<Model> { public string Name { get; set; } public string Password { get; set; } } 我可以访问model作为单个实例和集合对象 Console.Out.WriteLine("Original: " + model.Name + " : " + model.Password + Environment.N

我遇到了以下从泛型集合继承的用法

class Model : Collection<Model>
{
    public string Name { get; set; }
    public string Password { get; set; }
}
我可以访问
model
作为单个实例和集合对象

 Console.Out.WriteLine("Original:  " + model.Name + " : " + model.Password + Environment.NewLine);

 foreach (var m in model)
 {
    Console.Out.WriteLine(m.Name + " : " + m.Password + Environment.NewLine);
 }
这是怎么可能的,在幕后到底发生了什么

编辑:为了进一步澄清,
model
有一个单独的实例,我可以在其中访问
model.Name
(Name1),而不是集合的一部分,我可以在其中访问
model[0]。Name
(Name2)。这种双重性让我困惑。

关于

 class Model : Collection<Model>

这里的
列表
还包含一个尚未完全定义的类型

为什么不可能呢?这几乎只是收集一些额外的铃铛和口哨。我不知道你在问什么。最后一段代码(在引用
单个实例和集合对象时,
只是通过
foreach
循环迭代集合中的每个项;换句话说,它迭代集合
模型
,将集合中的每个项分配给变量
m
,并访问该变量
m)
。这里没有“两者”,您发布的任何代码中也没有“暗中”发生任何事情。(我没有投反对票-您的理由不清楚,我要求您澄清您在问我们什么。)这段代码没有什么奇怪的地方,只是它可能会让人困惑。它是一个能够容纳模型集合的模型。我个人认为它可以称为ModelCollection或其他such@AmitOlkar-你可以试着把你不明白的说得更清楚一些。现在你正在收集接近票数的选票。我想可能会有其他的财产n
Model
除了
子模型
。否则,一路下来就是海龟。
 class Model : Collection<Model>
class Model
{
    public List<Model> SubModels { get; set; }
}