首页 新闻 会员 周边 捐助

IList 的疑问

0
悬赏园豆:20 [已解决问题] 解决于 2007-12-09 15:22
<P>&nbsp;【A】 public IList&lt;CategoryInfo&gt; GetCategories() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dal.GetCategories();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>这里的为什么用IList&lt;CategoryInfo&gt;,而不用dataset、或者ArrayList<BR>他们之间有什么区别吗</P> <P>【B】public CategoryInfo GetCategory(string categoryId) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Validate input<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (string.IsNullOrEmpty(categoryId))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Use the dal to search by category Id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dal.GetCategory(categoryId);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P> <P>为什么A用IList而B用CategoryInfo 作为返回类型呢</P> <P>&nbsp;</P> <P>谢谢</P>
问题补充: 还有,对于泛型我还是不太明白,哪位有关这个方面的文章或者简单的demo吗?供我学习! 谢谢
伊牛娃的主页 伊牛娃 | 菜鸟二级 | 园豆:207
提问于:2007-12-07 17:03
< >
分享
最佳答案
0
IList<>性能好这种说法是肯定错误的 IList<>本身只是一个泛型接口,何来性能好坏之说,虽然一般的List实现一般比DataSet高效,但这并不是它的价值重心。 使用接口而非具体类型,是OOP中比较普遍的原则,其核心价值在于解除对特定类的依赖,通过接口将对象的行为与具体实现隔离开来。纵观楼主的代码,OOP的味道很浓郁,通常OOP的软件架构,一般是不会使用DataSet这种关系模型味道如此浓重的类的,更别说用它作为载体在不同层次间传递了(特殊需求除外)。 A 是返回一组CategoryInfo B 是返回一个CategoryInfo
Klesh Wong | 小虾三级 |园豆:780 | 2007-12-07 23:27
其他回答(9)
0
A:IList的性能比DataSet 好 B:A和B的功能都不一样,A要返回的是CategoryInfo的集合,B只是跟据categoryId返回CategoryInfo对象
Hermes.Liu | 园豆:200 (初学一级) | 2007-12-07 17:23
0
A:用IList<CategoryInfo>而不是DataSet 这样可以分离数据库和领域逻辑 这样业务逻辑的开发人员就可以不考虑数据库的信息了 B:第一个方法返回的是多个对象,而第二个方法则仅仅返回一个对象。
Anders Cui | 园豆:1570 (小虾三级) | 2007-12-07 18:00
0
A:IList<T> 与 DataSet 是为了分层比较清楚 ,DataSet一般是返回给数据层使用,而IList<T>是返回给商业层和应用层使用,这样逻辑比较清楚,阅读起来也容易。而ArrayList没有范型支援,只能存储object对象,逻辑上就不太容易阅读了 B:很明显是一个ID只返回一个CategoryInfo对象,用不到存储到集合中去吧! PS:解释的不一定很合理!
lu xu | 园豆:410 (菜鸟二级) | 2007-12-07 18:17
0
我除了在asp里面经常用那时候的ds,写asp.net的程序后就很少用了 不过最近准备看看 找工作的时候会有用的
JesseZhao | 园豆:305 (菜鸟二级) | 2007-12-07 19:22
0
A IList<> 是泛型,强类型,可以说是.NET2.0中ArrayList的替代方式,性能高,强类型的操作起来也方便 B A中是返回一个CategoryInfo对象集合,而B中只会返回一个CategoryInfo对象
PENGHAO-X | 园豆:20 (初学一级) | 2007-12-07 19:35
0
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 楼上各位说得都很有道理,这里我就不再赘述了,分享我找到的一些相关的例子,相信能够更好地帮您解决这方面的疑惑。
volnet(可以叫我大V) | 园豆:720 (小虾三级) | 2007-12-08 02:09
0
楼上各位说得很清楚了! 连文章都帮你找出来了! 楼主是在看PetShop4.0吧!
天际翔龙 | 园豆:215 (菜鸟二级) | 2007-12-08 16:02
0
是啊,,petshop4.0,,我也在研究,一直不懂范型...有个问题,为什么类型参数使用了CategoryInfo,但是方法中却没有用到?
(心)Shing Ye | 园豆:125 (初学一级) | 2007-12-08 21:52
0
A:返回一个对象集合,同dataset,dataRead一样,但ilist是.net2.0的一个新特性,不管用什么数据库都可用ilist,一般在业务逻辑层用,供页面调用。(前提要有实体类) B:返回一个对象,一般应该是一个实体类
chy710 | 园豆:167 (初学一级) | 2007-12-09 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册