我遇到了繼承自通用集合的以下用法。繼承T from Collection <T>
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);
}
這是怎麼可能的,真正發生了什麼?
編輯:爲了進一步澄清,model
具有單個實例,它是獨立的,其中I可以訪問model.Name
(名1),而不是集合,其中我可以訪問model[0].Name
(名稱2)的一部分。這種雙重性質讓我感到困惑。
爲什麼不能這樣做?這幾乎只是做了一些額外的花裏胡哨的收藏>。 –
AlliterativeAlice
我不確定你在問什麼。最後一塊代碼(你指的是單個實例和集合對象)只是通過foreach循環迭代集合中的每個項目;換句話說,它正在遍歷集合'model' ,將集合中的每個元素賦給變量'm',並訪問變量'm'。這裏沒有「both」,在你的任何發佈代碼中都沒有發生「封底」事件(我沒有downvote - 你的問題只是不清楚,我要求你[編輯]澄清你問我們的是什麼。) –
代碼沒有什麼奇怪的,除了它可能令人困惑。 –