4 .net c# generics cil cil-metadata
在C++中,template声明需要在头文件中(除非您明确声明模板类型),我明白了解原因.
我没有得到的是如果C#编译器没有.cs要检查的文件,它如何处理泛型.我怀疑它会检查CIL,因为这将是一个处理器密集型操作.我知道它能够从元数据中提取类型信息,但如果通用函数的代码也被编码,那么对于可执行文件来说将是一个巨大的膨胀.
那么,再次,编译器如何使用泛型?
我想你问的是C#编译器如何使用引用程序集中定义的泛型类型,而不是询问C#编译器如何编译定义泛型类型的.cs文件(因为你说"如果它没有.cs文件").
通用类型和成员在IL中编码为通用.封闭的泛型类型和成员由jit编译器在运行时构造.所以对你的问题的简单回答是"C#编译器通过发出IL来处理泛型类型,导致jit编译器在运行时构造它们."
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |