当前位置: 首页 > 编程语言 > C#

CollectionBase和泛型分享

时间:2023-04-10 15:06:04 C#

CollectionBase和泛型我正在将一个应用程序从.NET1.1迁移到.NET2.0。我应该删除所有对CollectionBase的使用吗?如果是这样,迁移的最佳策略是什么?是的,最好看的类是System.Collections.Generic。我通常使用列表。您可以使用两种方法:ApublicclassMyClass{publicListItems;}BpublicclassMyItemCollection:List{}publicclassMyClass{publicMyItemCollectionItems;如果您打算扩展List的功能,那么这两种方法只是略有不同,那么只需要使用方法(B)。下面是包含更多信息的链接:http://msdn.microsoft.com/en-us/library/6sh2ey19(VS.80).aspx对于已经实现的类,可以删除IList接口中指定的所有函数。例如publicintAdd(InstrumentTradeDataRowinstTrade){returnList.Add(instTrade);这可以删除,因为List已经为您实现了类型安全的Addfunction。有关详细信息,请参阅此链接:http://msdn.microsoft.com/en-us/library/3wcytfd1(VS.80).aspx通常,List可以完成您通常想要的大部分功能。如果你想自定义行为,你应该inheritCollection-它有虚拟方法,所以你可以在添加/删除/更新等时调整行为。你不能用List这样做,因为没有(有害的)虚拟方法。我更喜欢MarkIngramsA)方法,可能使用您自己编写的基类。迁移到泛型还有另一个问题;这种转变往往会产生一种病毒效应。您可能会发现在完成之前无法停下来。如果您认为自己将花费几个小时来制作一些泛型,那么您通常会发现自己要花几天时间来完成所有的泛型。您可以/应该通过向列表提供新的类运算符重载来避免这种情况publicstaticimplicitoperatorMyClass(Listm){//从m转换为MyClass的代码}publicstaticexplicitoperatorList(MyClassm){//代码到convertfromMyClasslist}这些就到此为止了。您可以在以后的任何阶段使用“查找用法”来确定尚未完全转换的位置。删除所有用法后,您可以删除强制转换。我通常更喜欢将MyClass中的一个转换为List(这是您不想采用的方式),而另一个则隐含。那么最好的方法通常是从层的顶部开始,靠近表示层,然后逐步向下。(这和你想的恰恰相反,如果隐式的从MyClass转换成List,从哪一端开始是无所谓的)用过,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: