Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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_Asp.net Mvc - Fatal编程技术网

C# 我们可以';不能在接口中创建对象,但返回类型如何成为接口?

C# 我们可以';不能在接口中创建对象,但返回类型如何成为接口?,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我已经开始研究MVC了。在mvc中的一些教程中,我看到一个属性返回如下所示的类型:- public IEnumerable<location> ListofLocation{get;set;} public IEnumerable列表位置{get;set;} 上面的属性是model的属性,它返回将在下拉列表中填充的位置列表 我的问题是“如果我们不能创建接口的对象,那么为什么在接口中使用这种返回类型” 但是返回类型如何成为接口呢 这意味着该方法可以返回实现该特定接口的类的对

我已经开始研究MVC了。在mvc中的一些教程中,我看到一个属性返回如下所示的类型:-

    public IEnumerable<location> ListofLocation{get;set;}
public IEnumerable列表位置{get;set;}
上面的属性是model的属性,它返回将在下拉列表中填充的位置列表

我的问题是“如果我们不能创建接口的对象,那么为什么在接口中使用这种返回类型”

但是返回类型如何成为接口呢

这意味着该方法可以返回实现该特定接口的类的对象。

对于您的示例属性

public IEnumerable<location> ListofLocation{get;set;}
public IEnumerable列表位置{get;set;}
ListofLocation
可以是
List
,因为实现了
IEnumerable

但是返回类型如何成为接口呢

这意味着该方法可以返回实现该特定接口的类的对象。

对于您的示例属性

public IEnumerable<location> ListofLocation{get;set;}
public IEnumerable列表位置{get;set;}

ListofLocation
可以是
List
,因为implements
IEnumerable

当您返回一个实现特定接口的对象时,您会得到一个只包含该接口上定义的公共属性和方法的对象。对象公开的所有其他方法都被屏蔽

这就是对象实现接口的含义。该对象满足接口的约定

类似地,同一个对象可能会公开满足某些其他接口的属性和方法。因此,您还可以使用用于满足第一个接口的相同对象返回另一个接口类型的对象


最后,一个接口可以由不同的对象实现。这允许您更改接口的底层实现(即行为),同时仍然履行接口与接口用户的约定。

当您返回实现特定接口的对象时,您得到的对象仅包含在该接口上定义的公共属性和方法。对象公开的所有其他方法都被屏蔽

这就是对象实现接口的含义。该对象满足接口的约定

类似地,同一个对象可能会公开满足某些其他接口的属性和方法。因此,您还可以使用用于满足第一个接口的相同对象返回另一个接口类型的对象


最后,一个接口可以由不同的对象实现。这允许您更改接口的基本实现(即行为),同时仍然履行接口与接口用户的合同。

您觉得需要大声提问的原因是什么?您觉得需要大声提问的原因是什么?这意味着此属性可以返回arraylist、hastable、,list或者我可以说任何类型的集合都继承了IEnumerable接口?@user1648559,而不是inherit,implements应该是正确的术语,加上
ArrayList
没有实现
IEnumerable
,也应该分别查看它们的通用版本
list
和Dictionary,而不是ArrayList和HashTable(如果您使用的是.Net framework 2.0或更高版本)这意味着该属性可以返回arraylist、hastable、list,或者我可以说继承IEnumerable接口的任何类型的集合?@user1648559,而不是inherit,implements应该是正确的术语,另外,
arraylist
不实现
IEnumerable
,也应该研究它们的泛型版本分别列出和字典(如果您使用的是.Net framework 2.0或更高版本)