方法返回一个IList什么意思?

truelies 2012-03-07 07:01:39
比如有个方法

public static IList<int> a()
{
b=new List<int>();
return b;
}

这里不是返回一个List, 而是IList接口是什么意思呢?
...全文
4722 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
霜之咏叹调 2014-11-09
  • 打赏
  • 举报
回复
全都是大神呀,果然只能膜拜
truelies 2012-03-23
  • 打赏
  • 举报
回复
谢谢大家的讨论,比如这样

public static IList<int> a()
{
b=new List<int>();
b=b.Add(5);
return b;
}

如果返回一个IList,那个这个值被返回了吗? IList<int>这个接口能不能存储元素呢? 怎么我觉得微软把语言弄得这么复杂,让人觉得很累.
能不能举个简单的例子调用返回IList<int>比返回List<int>有什么优势?
mngzilin 2012-03-23
  • 打赏
  • 举报
回复
工厂模式中这是个简单办法
小茶杯 2012-03-23
  • 打赏
  • 举报
回复
刨根问底儿。。。。。精神可嘉。
ycagri 2012-03-17
  • 打赏
  • 举报
回复
抱着学习的态度来的
liang_24 2012-03-17
  • 打赏
  • 举报
回复
面向接口编程,返回IList<T>的目的是即使以后这个方法内部改变了,返回的不再是List而是继承IList接口的其他类型的话,调用这个方法的客户端或者类库的其他地方都不需要改变就可以很好地执行
rqx110 2012-03-15
  • 打赏
  • 举报
回复
蛋疼还真多
b87936260 2012-03-15
  • 打赏
  • 举报
回复
面向对象的特性 ---抽象,确保最大的复用
threenewbee 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 ligenhualear 的回复:]
延迟查询和IEnumerable没有关系。如果你要想着延迟查询,自己看下IQueryable<T>。。。
[/Quote]

什么叫“延迟查询”?真的懒得说了。
rnimeio 2012-03-15
  • 打赏
  • 举报
回复
额,讨论的好复杂,顶一个。。。。
sniper007 2012-03-15
  • 打赏
  • 举报
回复
贴出一段代码帮助理解:
interface IWork
{
void working();
}

class Persion
{
public string Name{get;set;}
public int Age {get;set;}
}


class Employee : Persion,IWork
{
public void Working()
{
Console.WriteLine("{0} is Working",Name);
}
}

public Program
{
static void Main(string[] args)
{
IWork p = new Employee
{
Name = "巫妖王"
};

///只有Working
p.Working();

Persion q = new Employee
{
Name = "巫妖王"
};

///q 有name Age 但是没有Working
var cc = q.Name;
var ccc = q.Age;

}

}
yyz985 2012-03-14
  • 打赏
  • 举报
回复
我的编程习惯:
返回值尽可能的明确,输入参数尽可能的模糊,使能接受最多的类型
如:List<T> GetList(IEnumeratorable<T1> items);
这样 items可以输入数组,可以输入List, 可以输入Collection等等所有的集合类型。
知道返回什么类型,我可以判断对他怎么操作
huazi 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 caozhy 的回复:]

比如在LINQ里,很多方法都返回IEnumerable<T>,为什么不返回List<T>或其他类呢?
这个问题问得好。

但是你的回答是错的。

最主要的原因是,因为这些方法属于延迟查询,本身就不是List<T>或其他类。

至于什么契约接口之类的,你的理解都是错的,不展开说了。
[/Quote]
延迟查询和IEnumerable没有关系。如果你要想着延迟查询,自己看下IQueryable<T>。。。
gw6328 2012-03-14
  • 打赏
  • 举报
回复
顶一下12#
一剑枯荣 2012-03-13
  • 打赏
  • 举报
回复
不是泛类的应用吗?
rekym 2012-03-13
  • 打赏
  • 举报
回复
IList更简单更通用吧。。。抽象e 不e ~~~~~~~~~
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 sniffer12345 的回复:]

引用 28 楼 wq34762707 的回复:

怎么越讨论越复杂了

千万别跟他们讨论设计模式,咱老老实实的,清晰的函数,明确的模块划分,通俗的命名风格,这就完完全全足够了 至于你是要用修饰要用代理要用虚工厂,我觉得都差不多,绕来绕去都一样
[/Quote]
说的是!!!
铜臂阿铁木 2012-03-12
  • 打赏
  • 举报
回复
一群蛋疼主。

这玩意儿讨论你们妹子的啊?

该用List的时候你返回个接口,想用的方法没有想要的特性找不到,还得强转回去: 这是错
该用接口的时候你返回个List,突然发现一个地方用的是List还有一个地方用的是LinkedList,还有个地方用的是ArrayList,老板还说过两天[/b]还有个地方用的数组,还得挨个写转换: [b]这也是错


其余的,随便你怎么玩。
wq34762707 2012-03-12
  • 打赏
  • 举报
回复
怎么越讨论越复杂了
兔子-顾问 2012-03-12
  • 打赏
  • 举报
回复
更倾向于这是一种开发一个灵活系统的习惯,返回接口比返回具体类型,可以隐藏类型不必要外部知道的部分,可以为子类提供扩展可能,当然,还要看代码的环境,猜测这么写的出发点。不可否认这是个好习惯。
加载更多回复(27)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧