C# 数据类型、内存使用与参数传递详解
1. 理解预定义的 .NET 数据类型
打开编译后的 DLL,展开 CH03_DynamicPerformance 节点,再展开 CH03_DynamicPerformance.Program 节点,找到 _dynamicType : private object 行调用。可以看到,动态类型在编译时会被转换为对象类型。你可以尝试调整 ILDASM 设置,查看 BenchmarkTests 类的代码。
2. 理解静态类型
在 .NET Core 和 .NET 5.0 之前的版本中,应用程序在各自的应用程序域中运行。多次运行应用程序,每个实例都有自己的应用程序域。在 ASP.NET 中,一个应用程序可使用多个应用程序域。在单个应用程序域中,静态类型只有一个实例,运行时在使用前必须创建其实例。
AppDomain 对象有自己的静态堆,静态值类型和引用类型会放在静态堆上,由应用程序域管理。垃圾回收器会考虑静态类型,但不会回收它们,因为它们可能引用其他堆上的对象。不同应用程序域中的静态类型和变量相互隔离。
在 .NET Native 和 .NET 5.0 中,应用程序域已被弃用,因为它们需要昂贵的运行时支持。微软建议用进程和/或容器替代应用程序域,还推荐使用 AssemblyLoadContext 类进行程序集的动态加载。
静态类由运行时仅实例化一次,不能自行实例化。静态构造函数在类加载到内存时执行。如果非静态
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



