.net - .net 4.0 动态变量的内存是如何分配的?

标签 .net c#-4.0

动态是隐式还是显式类型分配?在下面的示例上下文中,动态变量在运行时如何进行内存分配。

对类型安全的动态影响,因为 C# 是类型安全语言。

public class Program
{
    static void Main(string[] args)
    {                                                
        dynamic dynamicVar = 10;
        dynamicVar = true;
        dynamicVar = "hello world";
        // compiles fine
        int index = dynamicVar.IndexOf("world");                        
    }        
} 

最佳答案

就 CLR 而言,dynamic 类型的变量实际上是 object 类型的变量。它仅影响编译器,这使得使用动态表达式的任何操作都经过执行时绑定(bind)。

该绑定(bind)过程本身将使用额外的局部变量等(看看 ILDASM、Reflector 或类似的东西,你会感到惊讶),但就 dynamicVar 本身而言,你已经编写的代码get 就像拥有一个 object 变量 - 对 intbool 值进行适当的装箱。

关于.net - .net 4.0 动态变量的内存是如何分配的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758096/

相关文章:

.net - 将枚举序列化为 int

c# - 跨页面发布

c# - List<List<string>> 上的 Linq 计数组

string - 读取文本文件时将十六进制转换为整数

c# - Linq 语句 : Order by

java - Windows 中的虚拟设备

c# - 如何查看excel文件是office 2007还是2010的

c# - DependencyProperty内存泄漏

c# - 阻止开发人员调用 System.Windows.Forms.Application.DoEvents() 的最佳方法是什么?

c# - 在 x y 排序中使用变量