Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#接口有问题_C#_.net_Interface_Ienumerable - Fatal编程技术网

C#接口有问题

C#接口有问题,c#,.net,interface,ienumerable,C#,.net,Interface,Ienumerable,我正试图理解这件事的原因。。。当我使用接口语法时,我真的很难理解我告诉编译器要做什么。有人能用“这就是正在发生的事情”的方式来解释吗 无论如何。。。我的主要问题是 两者的区别是什么 public IEnumerable<string> MyMethod() {...} 你为什么要用一个而不是另一个 public string MyMethod() : IEnumerable {...} 不会编译,这是一个区别 但你本来可以的 public class MyClass : IEnu

我正试图理解这件事的原因。。。当我使用接口语法时,我真的很难理解我告诉编译器要做什么。有人能用“这就是正在发生的事情”的方式来解释吗

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

两者的区别是什么

public IEnumerable<string> MyMethod() {...}
你为什么要用一个而不是另一个

public string MyMethod() : IEnumerable {...}
不会编译,这是一个区别

但你本来可以的

public class MyClass : IEnumerable<string> {...}
公共类MyClass:IEnumerable{…}
然后

public IEnumerable<string> MyMethod() 
{
   MyClass mc = new MyClass();
   return mc;
}
public IEnumerable MyMethod()
{
MyClass mc=新的MyClass();
返回mc;
}
不会编译,这是一个区别

但你本来可以的

public class MyClass : IEnumerable<string> {...}
公共类MyClass:IEnumerable{…}
然后

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

当您说
public IEnumerable MyMethod(){…}
时,您正在声明一个方法,该方法返回实现
IEnumerable
的某个实例。此实例可能是字符串数组、列表或您创建的某种类型


当您说
公共类MyClass:IEnumerable{…}
时,您正在声明一个实现
IEnumerable
的类型。MyClass的实例可以由MyMethod返回。

当您说
public IEnumerable MyMethod(){…}
时,您正在声明一个方法,该方法返回实现
IEnumerable
的某个实例。此实例可能是字符串数组、列表或您创建的某种类型


当您说
公共类MyClass:IEnumerable{…}
时,您正在声明一个实现
IEnumerable
的类型。MyClass的实例可以由MyMethod返回。

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

class-MyClass
{
公共IEnumerable MyMethod(){…}
}
第二个是无效的C#,无法编译。它接近于类声明,tho

class MyClass : IEnumerable<string>
{

}
类MyClass:IEnumerable
{
}

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

class-MyClass
{
公共IEnumerable MyMethod(){…}
}
第二个是无效的C#,无法编译。它接近于类声明,tho

class MyClass : IEnumerable<string>
{

}
类MyClass:IEnumerable
{
}

第二个示例的代码无效。(我假设你的意思是C#-这个问题值得加上标签。)如果你能使两个例子都有效,我们将告诉你剩下的区别。你的第二个例子不是有效代码。(我假设你指的是C#-这个问题值得加上标签。)如果你能使两个例子都有效,我们将告诉你剩下的区别。