我们可以将var和dynamic分配给任何数据类型,所以这些存储在内存中的位置在哪里? var在编译时解析,我的理解是var根据赋值存储在堆或栈中。但是动态在运行时被解析,所以在它们存储在哪里之前?Var或动态变量引用类型或值类型?
-3
A
回答
2
var
仅仅是变量声明的语法糖。 var str = "abc";
和string str = "abc";
之间没有功能差异,因此它是堆栈还是堆取决于您正在使用的类型。
https://msdn.microsoft.com/en-us/library/dd264741.aspx
dynamic
结合有一堆东西引擎盖下但最终被类似地处理到object
,所以这将是这使它在堆上引用类型。
1
正如您所说,var
关键字对运行时间没有意义。它是编译器为推断类型换出的语言细节。
dynamic
对象始终为boxed以表现为引用,即使实际类型是值类型,例如int
。
您可以得出结论,声明为动态的变量将始终表现为引用。引用本身将属于它创建的范围(本地堆栈,堆中的成员),但它引用的对象将存储在堆内存中。
相关问题
- 1. 引用或值类型?
- 2. 引用类型或类类型变量不能接受给定值
- 3. 检索动态值类型变量
- 4. 在Swift中是一个值类型或引用类型?
- 5. !ClrStack局部变量 - 它是值类型还是引用类型
- 6. C#'动态'变量可以引用静态类型吗?
- 7. Javascript类变量 - 这个。或var
- 8. “C”sizeof与类型或变量
- 9. 哪一个更好?在变量类型声明中使用var或使用像int这样的真正类型,...?
- 10. 给定类型的动态变量
- 11. 调用静态类的方法传递动态变量的类型与泛型
- 12. 类型或
- 13. c#值类型和引用类型
- 14. 值类型字段是引用类型?
- 15. 变量和值类型
- 16. 这是ZF2常量var或数据类型
- 17. 类型或引用丢失。 C#
- 18. 类型的“变量”,类型为“可变”
- 19. 变量类型
- 20. 引用变量的数据类型(Java)
- 21. Haskell引用一个类型变量
- 22. C#\ Dynamic \如果动态变量var为空(对象类型)或零(值类型),我可以在一条语句中检查吗?
- 23. 获取动态类型的类类型?
- 24. 确定类型是引用类型还是值类型
- 25. Mono.Cecil类型引用类型?
- 26. 库类或模型类?
- 27. 弱类型或强类型语言
- 28. 将类型赋值给变量 - 'A'是一种类型,但用作'变量'?
- 29. 枚举或类型
- 30. Python类变量或类变量一般
你得到任何答案将是一个[详细FPGA实现(https://blogs.msdn.microsoft.com/ericlippert/2009/04/27/the-stack-is-an-于实现的细节部分酮/) – stuartd