我在 Microsoft VB.NET 教程中听到过这两个词。
答案
值相对于引用类型
变量 在C语言中价值 类型或参考 类型。int
和DateTime
是价值 类型。参考 类型。参考 类型。 参考类型。
变量的组成部分
有变量姓名 和它的价值 。Two parts。
变量的姓名 就是你declare 就这样吧。价值 就是你assign到它。
变量已初始化
所有变量总是被赋予一个最初的 变量所在点的值宣布 。initialized。
为了价值 类型,例如int
如果您不明确这样做,编译器将为它们提供一个有效值。int
的initialize 默认为零,DateTime
的initialize 到DateTime.MinValue
默认情况下。
参考 类型变量initialize 到你给它的对象。assign 如果不这样做,则为一个对象(即有效值)。null
- 没有什么。initialized为空。
对象被实例化
人类诞生了。实例 对于人类来说,物体是实例某个类的。
创建一个实例 一个类的称为instantiation(哒哒!)
所以宣布 ,初始化 , 和实例化像这样聚集在一起
MyClass myClassyReference = new MyClass();
在上面,说"…创建一个实例"是错误的目的……"
编辑 - 受到评论讨论的启发
使用不同的术语正在发生三件不同的事情(上面),并且术语不可互换:
- 声明了一个引用变量 -
MyClass myClassyReference
- 一个对象被实例化(…来自/来自给定的班级 , 默示) -
new MyClass()
- 该对象被分配给变量。
=
。
重述事实:
引用类型变量也简称为"引用"。
这:“objectA 是对象的实例"是完全错误的。
MyClass myClassyReference = null
一般来说,我们不会说"变量被赋值为 null”,也不会说"变量引用 null",而是说"变量为 null";
实际应用:
我用手指戳你的代码并说"这个实例有一个无效的属性。也许这就是循环失败的原因。你必须在实例化期间验证参数。"
我在你的代码中看到了这一点,
MyClass myClassyReference; myClassyReference.DoSomething();
“你声明了这个变量,但从未给它赋值。它是空的,所以它没有引用任何东西。这就是方法调用抛出异常的原因。”
结束编辑
生命中不能承受之轻
A参考类型变量的名称和值独立存在。
一个实例化对象可能有也可能没有对其的引用。
一个实例化对象可能有许多对其的引用。
A宣布 参考可能是也可能不是指向一个东西。