在C#接口中遇到问题

时间:2009-04-02 22:43:06

标签: c# .net interface ienumerable

我正在努力理解 - 为什么......我正在努力去理解当我使用IInterface语法时我告诉编译器要做的事情的概念。任何人都可以用“这是怎么回事”来解释它?

无论如何......我的主要问题是......

之间有什么区别
public IEnumerable<string> MyMethod() {...}

public string MyMethod() : IEnumerable {...}

为什么要使用一个而不是另一个?

3 个答案:

答案 0 :(得分:4)

public string MyMethod() : IEnumerable {...}

不会编译,这是一个区别。

但你可以

public class MyClass : IEnumerable<string> {...}

然后

public IEnumerable<string> MyMethod() 
{
   MyClass mc = new MyClass();
   return mc;
}

答案 1 :(得分:1)

当您说public IEnumerable<string> MyMethod() {...}时,您声明了一个返回实现IEnumerable<string>的实例的方法。此实例可能是一个字符串数组,List<string>或您创建的某种类型。

当您说public class MyClass : IEnumerable<string> {...}时,您声明了一种实现IEnumerable<string>的类型。 MyMeth的一个实例可以由MyMethod返回。

答案 2 :(得分:0)

第一个是有效的方法声明,只要它生活在一个类中 即

class MyClass 
{
    public IEnumerable<string> MyMethod() {...}
}

第二个是无效的C#,不会编译。它接近于一个Class声明,tho。

class MyClass : IEnumerable<string>
{

}