[已解决问题] IList 的疑问
提问时间: 2007-12-07 17:03
悬赏分:20 浏览:1874 次

 【A】 public IList<CategoryInfo> GetCategories() {
            return dal.GetCategories();
        }
这里的为什么用IList<CategoryInfo>,而不用dataset、或者ArrayList
他们之间有什么区别吗

【B】public CategoryInfo GetCategory(string categoryId) {
            // Validate input
            if (string.IsNullOrEmpty(categoryId))
                return null;
            // Use the dal to search by category Id
            return dal.GetCategory(categoryId);
        }

为什么A用IList而B用CategoryInfo 作为返回类型呢

 

谢谢


问题补充:还有,对于泛型我还是不太明白,哪位有关这个方面的文章或者简单的demo吗?供我学习!

谢谢

最佳答案
IList<>性能好这种说法是肯定错误的 IList<>本身只是一个泛型接口,何来性能好坏之说,虽然一般的List实现一般比DataSet高效,但这并不是它的价值重心。 使用接口而非具体类型,是OOP中比较普遍的原则,其核心价值在于解除对特定类的依赖,通过接口将对象的行为与具体实现隔离开来。纵观楼主的代码,OOP的味道很浓郁,通常OOP的软件架构,一般是不会使用DataSet这种关系模型味道如此浓重的类的,更别说用它作为载体在不同层次间传递了(特殊需求除外)。 A 是返回一组CategoryInfo B 是返回一个CategoryInfo
2007/12/7 23:27:07 回答者:Klesh Wong


提问者对于答案的评价:以前一直使用dataset传替数据 得重新好好学习了
其它回答(9)
A:IList的性能比DataSet 好 B:A和B的功能都不一样,A要返回的是CategoryInfo的集合,B只是跟据categoryId返回CategoryInfo对象
10个月前   回答者:缘易姿姿 - 菜鸟二级
A:用IList<CategoryInfo>而不是DataSet 这样可以分离数据库和领域逻辑 这样业务逻辑的开发人员就可以不考虑数据库的信息了 B:第一个方法返回的是多个对象,而第二个方法则仅仅返回一个对象。
10个月前   回答者:Anders Cui - 小虾三级
A:IList<T> 与 DataSet 是为了分层比较清楚 ,DataSet一般是返回给数据层使用,而IList<T>是返回给商业层和应用层使用,这样逻辑比较清楚,阅读起来也容易。而ArrayList没有范型支援,只能存储object对象,逻辑上就不太容易阅读了 B:很明显是一个ID只返回一个CategoryInfo对象,用不到存储到集合中去吧! PS:解释的不一定很合理!
10个月前   回答者:.Live - 菜鸟二级
我除了在asp里面经常用那时候的ds,写asp.net的程序后就很少用了 不过最近准备看看 找工作的时候会有用的
10个月前   回答者:JesseZhao - 菜鸟二级
A IList<> 是泛型,强类型,可以说是.NET2.0中ArrayList的替代方式,性能高,强类型的操作起来也方便 B A中是返回一个CategoryInfo对象集合,而B中只会返回一个CategoryInfo对象
10个月前   回答者:Dove.Net - 初学一级
http://msdn.microsoft.com/msdnmag/issues/02/12/CuttingEdge/ http://weblogs.asp.net/paolopia/articles/dsvscustomentities.aspx http://msdn.microsoft.com/msdnmag/issues/04/10/CuttingEdge/ http://msdn.microsoft.com/msdnmag/issues/05/08/CuttingEdge/default.aspx http://www.hanselman.com/blog/ReturningDataSetsFromWebServicesIsTheSpawnOfSatanAndRepresentsAllThatIsTrulyEvilInTheWorld.aspx http://blogs.msdn.com/aconrad/archive/2005/03/16/396999.aspx 楼上各位说得都很有道理,这里我就不再赘述了,分享我找到的一些相关的例子,相信能够更好地帮您解决这方面的疑惑。
10个月前   回答者:volnet(可以叫我大V) - 小虾三级
楼上各位说得很清楚了! 连文章都帮你找出来了! 楼主是在看PetShop4.0吧!
10个月前   回答者:天际翔龙 - 菜鸟二级
是啊,,petshop4.0,,我也在研究,一直不懂范型...有个问题,为什么类型参数使用了CategoryInfo,但是方法中却没有用到?
10个月前   回答者:Shing Ye - 初学一级
A:返回一个对象集合,同dataset,dataRead一样,但ilist是.net2.0的一个新特性,不管用什么数据库都可用ilist,一般在业务逻辑层用,供页面调用。(前提要有实体类) B:返回一个对象,一般应该是一个实体类
10个月前   回答者:chy710 - 菜鸟二级
评论
10个月前   Anders Cui :
另外,你的问题放错地方了,呵呵
这里是博客园专区
10个月前   Vincent Luo :
Anders Cui
chy710
volnet(可以叫我大V)[我需要加强E文学习了]HOHO

回答的都很详细,貌似好象只能选择一个最佳答案

谢谢各位的热心解释
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接