2016-09-29 216 views
-3

我们可以将var和dynamic分配给任何数据类型,所以这些存储在内存中的位置在哪里? var在编译时解析,我的理解是var根据赋值存储在堆或栈中。但是动态在运行时被解析,所以在它们存储在哪里之前?Var或动态变量引用类型或值类型?

+0

你得到任何答案将是一个[详细FPGA实现(https://blogs.msdn.microsoft.com/ericlippert/2009/04/27/the-stack-is-an-于实现的细节部分酮/) – stuartd

回答

1

正如您所说,var关键字对运行时间没有意义。它是编译器为推断类型换出的语言细节。

dynamic对象始终为boxed以表现为引用,即使实际类型是值类型,例如int

您可以得出结论,声明为动态的变量将始终表现为引用。引用本身将属于它创建的范围(本地堆栈,堆中的成员),但它引用的对象将存储在堆内存中。