首页新闻找找看学习计划

C#接口的声明问题

0
悬赏园豆:5 [已解决问题] 解决于 2015-11-27 17:12

  public  IEnumerable<int> Test() {
   foreach (int i in ii) {
    if (i > 2) {
     yield return i;
    }
    yield break;
    Console.WriteLine("这里的代码不执行");
   }
 }

实在搞不清楚Test()方法返回的到底是什么,是接口的实例吗?书上说接口不是不能实例化吗?为什么可以使用

IEnumerable<int> qqq = pp.Test();来将Test()方法的返回值给qq呢?这种写法不是接口的实例化吗?

spike_xy的主页 spike_xy | 初学一级 | 园豆:56
提问于:2015-11-26 11:07
< >
分享
最佳答案
0

这个就是一个方法不是接口。接口的定义是这样的

public interface IBankAccount{}

接口的定义必须要有interface 修饰。

public  IEnumerable<int> Test() {}

你的这个方法没有interface 修饰只是一个普通方法。

返回的是一个接口类型IEnumerable<int>这个是一个泛型接口。

收获园豆:5
凝冰 | 小虾三级 |园豆:685 | 2015-11-26 11:11
其他回答(3)
0

接口不能实例化的意思是,接口本身没有实现代码,换句话说,定义接口大括号内,没有实现代码,更不能有构造函数。最多有一些函数和属性签名。

接口不能实例化,但是可以被其他类实现。

虾。 | 园豆:257 (菜鸟二级) | 2015-11-26 12:28
0

IEnumerable<int> qqq = pp.Test() 

这是一个泛型的实例,可以理解为

List<int>qqq=pp.Test();

List 类型是集成IEnumerbale实现的,所以可以用IEnumerable 来声明一个List类型的泛型集合。

另外就是因为有 yield  关键字,所以整个代码是看起来很整洁的返回了一个List<int>类型

Sky.Grain | 园豆:303 (菜鸟二级) | 2015-11-26 13:15
0

1,接口真的不能实例

2,你需要了解一下一个方法都包括什么

修饰符 返回类型 方法名(参数=null){

方法体

}

3,结合你的问题你应该了解到Test是一个方法名,而IEnumerable<int>是你方法的返回类型

4,IEnumerable是集合类型的一个接口,而List就继承这个接口

5,你需要好好学习一下基础知识才行,加油!

澈澈 | 园豆:435 (菜鸟二级) | 2015-11-27 17:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册