1

汎用コレクションからの継承の次の使用法に出くわしました。

class Model : Collection<Model>
{
    public string Name { get; set; }
    public string Password { get; set; }
}

そして、次のようにインスタンス化できます。

 var model = new Model {Name = "Name1", Password = "Pass1"};
 model.Add(new Model { Name = "Name2", Password = "Pass2" });
 model.Add(new Model { Name = "Name3", Password = "Pass3" });

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);
 }

これはどのように可能であり、その裏で実際に何が起こっているのでしょうか?

編集:さらに明確にするために、アクセスできる(Name1)コレクションの一部ではなく、アクセスできる(Name2model )別の単一のインスタンスがあります。この二面性が私を混乱させています。model.Namemodel[0].Name

4

1 に答える 1