我试图理解这个 -why- ......当我使用 IInterface 语法时,我真的很难理解我告诉编译器做什么的概念。任何人都可以用“这是怎么回事”的方式来解释它吗?
无论如何......我的主要问题是......
和有什么区别
public IEnumerable<string> MyMethod() {...}
和
public string MyMethod() : IEnumerable {...}
你为什么要使用一个而不是另一个?
我试图理解这个 -why- ......当我使用 IInterface 语法时,我真的很难理解我告诉编译器做什么的概念。任何人都可以用“这是怎么回事”的方式来解释它吗?
无论如何......我的主要问题是......
和有什么区别
public IEnumerable<string> MyMethod() {...}
和
public string MyMethod() : IEnumerable {...}
你为什么要使用一个而不是另一个?
public string MyMethod() : IEnumerable {...}
不会编译,这是一个区别。
但你可以
public class MyClass : IEnumerable<string> {...}
接着
public IEnumerable<string> MyMethod()
{
MyClass mc = new MyClass();
return mc;
}
当您说时public IEnumerable<string> MyMethod() {...}
,您是在声明一个方法,该方法返回一些实现的实例IEnumerable<string>
。这个实例可能是一个字符串数组、aList<string>
或您创建的某种类型。
当您说时public class MyClass : IEnumerable<string> {...}
,您是在声明一个实现的类型IEnumerable<string>
。MyMethod 可以返回 MyClass 的一个实例。
第一个是有效的方法声明,只要它存在于类中,即
class MyClass
{
public IEnumerable<string> MyMethod() {...}
}
第二个是无效的 C# 并且不会编译。它接近于类声明。
class MyClass : IEnumerable<string>
{
}