gpt4 book ai didi

vb.net - "instantiated"和 "initialized"有什么区别?

转载 作者:行者123 更新时间:2023-12-03 04:50:47 25 4
gpt4 key购买 nike

我一直在微软的 VB.NET 教程中听到这两个词。当用于引用变量时,这两个词之间有什么区别?

最佳答案

值相对于引用类型
C# 中的变量在 2 组中的 1 组中。值类型或引用类型。类型如 intDateTime是值类型。相反,您创建的任何类都是引用类型。 C# 字符串也是一种引用类型。 .NET 框架中的大多数东西都是引用类型。
变量的组成部分
有变量名称及其值。 两部分 .
变量的名字就是你的名字 声明 它是。值(value)就是你分配 到它。
变量被初始化
所有变量总是在声明变量时被赋予一个初始值。因此所有变量都是 初始化 .
对于值类型,例如 int如果你没有明确地这样做,编译器会给它们一个有效的值。 int初始化 默认为零,DateTime初始化 DateTime.MinValue默认情况下。
引用类型变量 初始化 到你给它的对象。编译器不会分配 一个对象(即有效值),如果你不这样做。在这种情况下,该值为 null - 没什么。所以我们说引用是初始化 为空。
对象被实例化
人类诞生了。对象被实例化。婴儿是人类的实例,对象是某个类的实例。
创建类实例的行为称为 实例化 (打打!)
所以声明,初始化和实例化像这样结合在一起

MyClass myClassyReference = new MyClass();
在上面,说“......创建一个对象的实例......”是错误的

编辑 - 受评论讨论启发
使用不同的术语(以上)正在发生三件不同的事情,并且该术语不可互换:
  • 声明了一个引用变量 - MyClass myClassyReference
  • 一个对象被实例化(...来自/来自给定的类,暗示) - new MyClass()
  • 对象被分配给变量。 = .

  • 重述事实:
  • 引用类型变量也简称为“引用”。 “值类型变量”不是引用。
  • 这个:“objectA 是一个对象的实例”是非常错误的。如果 objectA 是“objectB 的一个实例”,那么它必须是 objectA 以 objectB 的类型开始生命 - 无论是什么 - 以及当前状态 - 无论是什么。当 objectB 更改时创建对象 D、E 和 F 怎么样?不,不! “objectA 是类的实例”是概念和技术案例。 “实例化”和“实例化”具有精确的含义——对象从类中获取其类型、定义和值。
  • MyClass myClassyReference = null一般我们不说“变量被赋值为null”,也从不说“变量引用null”,而是说“变量为null”;或“变量未引用任何内容”,或“引用为空”

  • 实际应用:
  • 我用手指指着你的代码说“这个实例有一个无效的属性。也许这就是循环失败的原因。你必须在实例化过程中验证参数。” (即构造函数参数)。
  • 我在你的代码中看到了这一点,
     MyClass myClassyReference;
    myClassyReference.DoSomething();
    “你声明了变量,但从未分配过它。它是空的,所以它没有引用任何东西。这就是方法调用抛出异常的原因。”

  • 结束编辑

    无法承受的生命之轻
    引用类型变量的名称和值独立存在。我的意思是独立。
    实例化的对象可能有也可能没有对它的引用。
    一个实例化的对象可能有很多对它的引用。
    声明的引用可能指向也可能不指向一个对象。

    关于vb.net - "instantiated"和 "initialized"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330767/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com