动态是隐式还是显式类型分配?在下面的示例上下文中,动态变量在运行时如何进行内存分配。
对类型安全的动态影响,因为 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
变量 - 对 int
和 bool
值进行适当的装箱。
关于.net - .net 4.0 动态变量的内存是如何分配的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758096/