naw*_*fal 5 .net c# generics collections
关于非泛型类的所有大惊小怪(几乎是)为什么.NET集合类仍然是非泛型的?例如,Control.ControlCollection不实现IList<T>但仅实现IList,或者FormCollection仅实现upto ICollection而不实现ICollection<T>.每次我必须做一些很酷的操作IEnumerable<T>或利用Linq细节,我必须总是将集合类转换为它的等效泛型类型,如下所示:
this.Controls.OfType<Control>();
Run Code Online (Sandbox Code Playgroud)
奇怪的是必须Control在这样的操作中指定ControlCollection何时它能够容纳的唯一东西又是一个控件.
是否保持向后兼容性,考虑到这些集合存在于.Net 1.1天?即使它是,为什么不能这些集合(还有更多)进一步实现通用接口以及现有的接口,我认为这不会破坏向后兼容性.我不确定我是否遗漏了一些关键的仿制药,可能是我对这个想法并不彻底.
编辑:虽然我在考虑WinForms时问过这个问题,但我发现这也适用于像WPF这样的新技术.正如@Dennis所指出的,WPF也有非泛型集合.例如WindowCollection或ItemCollection.WPF是在.NET 3中发布的,但是在.NET 2中引入了泛型:-o
是否保持向后兼容性,考虑到这些集合存在于.Net 1.1天?
是的,但主要是因为WinForms自2005年以来甚至更早都是"功能完备".
功能完整意味着它是生命支持,只是没有复苏.
WindowsCollection已经是"专用的",它包含从Window派生的类.继承是这里的正确模型,不需要泛型.
而ItemCollection也是故意非通用的.它是一个有意识的功能,它可以包含所有类型,甚至同时包含不同类型.同样,泛型不是必需的,也不是理想的.
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |