几个月前有人问我这个问题,我无法详细解释.C#中的引用类型和值类型有什么区别?
我知道,价值类型int
,bool
,float
,等和引用类型delegate
,interface
等等.或者,这是不对的,太?
你能以专业的方式向我解释一下吗?
在VB.NET中,有没有办法将DateTime
变量设置为"未设置"?为什么它可以设置DateTime
到Nothing
,但没有能够检查它是否是Nothing
?例如:
Dim d As DateTime = Nothing
Dim boolNotSet As Boolean = d Is Nothing
Run Code Online (Sandbox Code Playgroud)
第二个语句抛出此错误:
'Is' operator does not accept operands of type 'Date'. Operands must be reference or
nullable types.
Run Code Online (Sandbox Code Playgroud) 我不明白术语"编译时间"和"运行时间"(或"运行时")的含义.
我对"价值类型"和"参考类型"的含义以及它们与上述时间的关系有点困惑.
有人请解释这些事吗?
看到每次作为参数传递时都会创建值类型的新实例,我开始考虑使用ref
或out
关键字可以显示实质性性能改进的情况.
经过一段时间它打击了我,虽然我看到使用价值类型的不足,我不知道有什么好处.
所以我的问题很简单 - 拥有价值类型的目的是什么?我们通过复制结构而不是仅仅创建一个新的引用来获得什么?
在我看来,只有像Java一样的引用类型会容易得多.
编辑:只是为了清除它,我不是指小于8字节(参考的最大大小)的值类型,而是指8字节或更多的值类型.
例如 - Rectangle
包含四个int
值的结构.
c# value-type reference-type pass-by-reference pass-by-value
可能重复:
C#中的值类型和引用类型有什么区别?
值类型和重新引用类型之间的基本差异是什么
是否有一篇我可以阅读的高级文章可以解释如何在.net框架中为不同类型(值和引用)分配内存.
例如,我们知道值类型是在堆栈上分配空间,但是如何管理?
如何在堆中管理引用类型以及存储实际值的位置.(像任何类一样的引用类型将包含许多值类型,它们保存在哪里以及如何管理它们)