我已经开始研究 MVC。在mvc中的DropDownList的一些教程中,我看到了一个返回IEnumerable类型的属性,如下所示:-
public IEnumerable<location> ListofLocation{get;set;}
上面的属性是模型的一个属性,它返回一个位置列表,这些位置将填充到下拉列表中。
我的问题是“如果我们不能创建接口对象,那么为什么在接口中返回这种类型”?
我已经开始研究 MVC。在mvc中的DropDownList的一些教程中,我看到了一个返回IEnumerable类型的属性,如下所示:-
public IEnumerable<location> ListofLocation{get;set;}
上面的属性是模型的一个属性,它返回一个位置列表,这些位置将填充到下拉列表中。
我的问题是“如果我们不能创建接口对象,那么为什么在接口中返回这种类型”?
但是返回类型如何成为接口?
这意味着该方法可以返回实现该特定接口的类的对象。
对于您的示例属性。
public IEnumerable<location> ListofLocation{get;set;}
ListofLocation
可以List<Location>
自List<T>
实现IEnumrable<T>
当您返回一个实现特定接口的对象时,您将获得一个仅包含在该接口上定义的公共属性和方法的对象。对象公开的所有其他方法都被屏蔽掉了。
这就是对象实现接口的意义。该对象满足接口的约定。
类似地,同一个对象可能会公开满足某些其他接口的属性和方法。因此,您还可以使用满足第一个接口的相同对象返回该其他接口类型的对象。
最后,一个接口可以由不同的对象实现。这允许您更改接口的底层实现(即行为),同时仍然履行接口与接口用户的合同。