C#接口无法实例化,所以为什么不指定具体类型就可以使用IEnumerable

本杰明·毛勒(Benjamin Maurer)

我知道接口不能被实例化,但是可以创建实现接口的对象的实例。

但是在此示例中,我正在使用接口变量,并且从未将其实例化为类的对象。

public static IEnumerable<Person> GetPeople()
{
    IEnumerable<Person> people = AMethod<IEnumerable<Person>>();
    return people;
}

var people = MyClass.GetPeople();
// ... operations on the people variable

因此,我绝对不会引用实现IEnumerable的数组或列表或其他类型。当我调试此代码时,调试器显示people变量的类型为IEnumerable <Person>。但是,如果接口不是“真实的东西”而只是合同,那会怎样呢?就像在内存中是数组,列表还是其他东西一样?我正在学习有关接口的课程,但是我对此一无所知。

内森·库珀(Nathan Cooper)
AMethod<IEnumerable<Person>>()

这正在调用看起来像这样的方法:

public  T AMethod <T> {
      // Do something to create an instance of T
}

IEnumerable<Person>是你传递什么样的<T>的的AMethod签名。这是一种通用方法

结果是创建了一些具体的东西(例如Person[]List<Person>等等)来适合接口IEnumerable<Person>但这是由创建的AMethod,而不是您发布的任何代码。

如果您对人们实际上是什么类型感到好奇,而不能只是看一下AMethod,致电Type concreteType = people.GetType();会告诉您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

BehaviorSubject:为什么不使用next就可以工作

来自分类Dev

打印机无法正常工作。给它一个静态IP,现在就可以使用了!但为什么?

来自分类Dev

为什么不吞咽在循环上创建的任务就可以正常工作

来自分类Dev

为什么有时不使用原始字符串就可以使用Python正则表达式字符串?

来自分类Dev

为什么不使用attr_writer就可以设置哈希属性?

来自分类Dev

Maven:为什么不使用pom.xml配置就可以运行mvn checkstyle:checkstyle?

来自分类Dev

在我的XSL文件中包含一个C#(.cs)文件,这样我就可以使用智能感知了吗?

来自分类Dev

不使用字典就可以在C#中计算字符串的语法值

来自分类Dev

为什么在使用通用约束时无法将具体类型转换为接口

来自分类Dev

在MS Word中不格式化就可以粘贴的键盘快捷方式是什么?

来自分类Dev

为什么上传文件无法处理离子含量?如果我去除离子含量就可以工作

来自分类Dev

接口无法在Java中实例化,但是当使用接口返回类型时发生了什么

来自分类Dev

为什么访问不用`var`声明的变量而不必在其他文件中使用`require`就可以工作呢?

来自分类Dev

正确的实例化类的方法,这样我就可以验证证书中的路径链

来自分类Dev

为什么在实例化具有具体类型的对象时不可能对变量使用泛型类型?

来自分类Dev

当我可以不缓冲就可以流式传输高清YouTube视频时,为什么不能高速下载所有文件?

来自分类Dev

不使用war文件就可以使用JBoss Rewrite吗?

来自分类Dev

在结构归纳证明中概括一个要求就可以使用归纳假设

来自分类Dev

如何在Android中延迟startactivity()。这样就可以使用截击数据

来自分类Dev

如何自动安装辅助的内部HDD,以便从启动就可以使用它的符号链接?

来自分类Dev

为什么我们可以使用$ this实例化不存在的变量

来自分类Dev

PHP&MySQL:为什么没有锁定就可以正常工作?

来自分类常见问题

为什么在定义函数表达式之前就可以对其进行调用?

来自分类Dev

为什么主函数没有返回值就可以工作?

来自分类Dev

为什么elsif在Ruby中没有条件就可以工作?

来自分类Dev

为什么没有include语句就可以成功编译头文件?

来自分类Dev

为什么Google Geocoding API没有密钥就可以工作?

来自分类Dev

为什么单击事件监听器就可以正常工作

来自分类Dev

为什么仅通过重命名扩展名就可以转换文件?

Related 相关文章

  1. 1

    BehaviorSubject:为什么不使用next就可以工作

  2. 2

    打印机无法正常工作。给它一个静态IP,现在就可以使用了!但为什么?

  3. 3

    为什么不吞咽在循环上创建的任务就可以正常工作

  4. 4

    为什么有时不使用原始字符串就可以使用Python正则表达式字符串?

  5. 5

    为什么不使用attr_writer就可以设置哈希属性?

  6. 6

    Maven:为什么不使用pom.xml配置就可以运行mvn checkstyle:checkstyle?

  7. 7

    在我的XSL文件中包含一个C#(.cs)文件,这样我就可以使用智能感知了吗?

  8. 8

    不使用字典就可以在C#中计算字符串的语法值

  9. 9

    为什么在使用通用约束时无法将具体类型转换为接口

  10. 10

    在MS Word中不格式化就可以粘贴的键盘快捷方式是什么?

  11. 11

    为什么上传文件无法处理离子含量?如果我去除离子含量就可以工作

  12. 12

    接口无法在Java中实例化,但是当使用接口返回类型时发生了什么

  13. 13

    为什么访问不用`var`声明的变量而不必在其他文件中使用`require`就可以工作呢?

  14. 14

    正确的实例化类的方法,这样我就可以验证证书中的路径链

  15. 15

    为什么在实例化具有具体类型的对象时不可能对变量使用泛型类型?

  16. 16

    当我可以不缓冲就可以流式传输高清YouTube视频时,为什么不能高速下载所有文件?

  17. 17

    不使用war文件就可以使用JBoss Rewrite吗?

  18. 18

    在结构归纳证明中概括一个要求就可以使用归纳假设

  19. 19

    如何在Android中延迟startactivity()。这样就可以使用截击数据

  20. 20

    如何自动安装辅助的内部HDD,以便从启动就可以使用它的符号链接?

  21. 21

    为什么我们可以使用$ this实例化不存在的变量

  22. 22

    PHP&MySQL:为什么没有锁定就可以正常工作?

  23. 23

    为什么在定义函数表达式之前就可以对其进行调用?

  24. 24

    为什么主函数没有返回值就可以工作?

  25. 25

    为什么elsif在Ruby中没有条件就可以工作?

  26. 26

    为什么没有include语句就可以成功编译头文件?

  27. 27

    为什么Google Geocoding API没有密钥就可以工作?

  28. 28

    为什么单击事件监听器就可以正常工作

  29. 29

    为什么仅通过重命名扩展名就可以转换文件?

热门标签

归档