gpt4 book ai didi

c# - C# 编译器如何使用泛型?

转载 作者:太空狗 更新时间:2023-10-30 00:08:00 25 4
gpt4 key购买 nike

在 C++ 中,template 声明需要在头文件中(除非您显式声明模板类型),我明白为什么。

我不明白的是,如果 C# 编译器没有要检查的 .cs 文件,它如何处理泛型。我怀疑它会检查 CIL,因为那将是处理器密集型操作。我知道它能够从元数据中提取类型信息,但如果通用函数的代码也被编码,这对可执行文件来说将是一个巨大的膨胀。

那么,编译器又是如何处理泛型的呢?

最佳答案

我猜你问的是 C# 编译器如何使用引用程序集中定义的泛型类型,而不是问 C# 编译器如何编译定义泛型类型的 .cs 文件(因为你说“如果它没有”没有 .cs 文件")。

泛型类型和成员在 IL 中被编码为泛型。封闭的泛型类型和成员由 jit 编译器在运行时构造。因此,对您的问题的简单回答是“C# 编译器通过发出 IL 来处理泛型类型,这会导致 jit 编译器在运行时构造它们。”

关于c# - C# 编译器如何使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com