c# 接口做为返回值类型是啥意思

saizhang 2009-10-20 02:50:28
RT
...全文
1353 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
不老神仙 2010-08-16
  • 打赏
  • 举报
回复
学习 接口指向了具体实现该接口的实例
调用的时候就是那个实例的具体实现方法
24K純帥 2009-10-21
  • 打赏
  • 举报
回复
学习。。
zuguowoaini 2009-10-21
  • 打赏
  • 举报
回复
接口作为返回值,不是说你的方法就是返回那个接口,这是无意义的!

实际上s是,返回实现了这个接口的任意的类。

这是面向对象的表现,叫多态吧,记不清了,本人也是初学者。

zhouxingyu896 2009-10-21
  • 打赏
  • 举报
回复
学习

顶5楼的
JGood 2009-10-20
  • 打赏
  • 举报
回复
这就是面向对象好玩的地方。
vrhero 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 quluqi 的回复:]
面向对象中一个重要的解偶合方法就是使用接口编程,高层模块和低层模块都要依赖抽象(或接口)。
[/Quote]
这是原因...

至于意思...就是返回结果只要具有该接口即可,也就是说符合该契约就行不必去管它的具体类型...谓之解耦...
HFun_ 2009-10-20
  • 打赏
  • 举报
回复
面向对象中一个重要的解偶合方法就是使用接口编程,高层模块和低层模块都要依赖抽象(或接口)。
flyerwing 2009-10-20
  • 打赏
  • 举报
回复
namespace ns
{
interface IA
{...}
public class AA:IA
{
public IA GetSelf()
{
return ((IA)this);
//这函数就是返回接口对象地
}
...
}
}
不知道是不是这意思。
chengwen2402163 2009-10-20
  • 打赏
  • 举报
回复
工厂里面有个多数据库反射吧,好像就是这样的。
江南小鱼 2009-10-20
  • 打赏
  • 举报
回复
interface Iinteface{}
class A:Iinterface{}
class B:Iinterface{}
class C:Iinterface{}
A、B、C继承接口Iinterface
返回值为接口,正是OOP的体现。
Iinterface i=new A();//或B、C等都可以
因为A、B、C都继承自接口Iinterface,A、B、C的实例是Iinterface类型。
继承接口而不是继承类,便于相同的方法签名在不同的子类中进行不同的实现。
江南小鱼 2009-10-20
  • 打赏
  • 举报
回复
这么说吧:集合之所以可以使用foreach循环进行遍历,是因为集合继承了System.Collections.IEnumerable接口
interface IEnumerable
{
IEnumerator GetEnumerator();//返回一个IEnumerator类型的对象
}
System.Collections.IEnumerator接口:
interface IEnumerator
{
object Current{get;}
bool MoveNext();
void Reset();
}
IEnumerator的工作方式:实现该接口的对象应与一个集合相关联,这个对象在第一次初始化时,还没有指向集合中的任何元素,必须调用MoveNext(),移动枚举,才能使它指向集合中的第一个元素。接着用Current属性获取该元素,Current属性返回一个对象引用,所以必须把它的数据类型转换为要在集合中查找的对象类型。可以对该对象进行任何操作,之后再次调用MoveNext()方法,移动到集合的下一个元素上。重复这个过程,直到集合中没有元素为止,当Current属性返回null时,就表示到达了集合的末尾。
如果要返回到集合的开头,可以随时调用Reset()方法。注意Reset()方法实际上返回到集合开头前面的位置,如果要调用这个方法,就需要接着调用MoveNext(),指向第一个元素。

根据以上理论,可以把一个结构(struct)继承IEnumerable接口,而当做一个集合使用。
GetEnuerator()方法返回一个遍历struct的类,该类继承System.Collections.IEnumerator接口

//assume Message is a collection
IEnumerator enumerator=Message.GetEnumerator();//返回一个实现INumerator接口的类实例

接口做返回值类型,说白了就是返回实现该接口的类对象(接口只要方法、属性、事件、索引器等的定义,没有实现。)。
zhujiazhi 2009-10-20
  • 打赏
  • 举报
回复
面向接口编程,返回接口,多态调用。。。
Ricercar 2009-10-20
  • 打赏
  • 举报
回复
就是返回值是一个接口
zhujiazhi 2009-10-20
  • 打赏
  • 举报
回复
interface Person
{
string Name();
}

class Man : interface
{
public string Name()
{
return "man";
}
调用
Person p = new Man();
p.Name();
}
mohugomohu 2009-10-20
  • 打赏
  • 举报
回复
可能跟返回object差不多的意思吧

110,538

社区成员

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

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

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