声明,实例化,初始化和分配对象的含义

use*_*077 15 c# terminology

从技术上讲,在C#中声明,实例化,初始化分配对象的术语的含义和区别是什么?

我想我知道分配的意思,但我没有正式的定义.

在msdn中,有人说"创建对象的行为称为实例化".但创造的意义对我来说似乎含糊不清.你可以写

int a;
Run Code Online (Sandbox Code Playgroud)

a随后产生的?

Zar*_*wan 26

声明 - 声明变量意味着向程序引入新变量.您可以定义其类型和名称.

int a; //a is declared
Run Code Online (Sandbox Code Playgroud)

实例化 - 实例化类意味着创建类的新实例.来源.

MyObject x = new MyObject(); //we are making a new instance of the class MyObject
Run Code Online (Sandbox Code Playgroud)

初始化 - 初始化变量意味着为其分配初始值.

int a; //a is declared
int a = 0; //a is declared AND initialized to 0
MyObject x = new MyObject(); //x is declared and initialized with an instance of MyObject
Run Code Online (Sandbox Code Playgroud)

分配 - 分配给变量意味着为变量提供值.

int a = 0; //we are assigning to a; yes, initializing a variable means you assign it a value, so they do overlap!
a = 1; //we are assigning to a
Run Code Online (Sandbox Code Playgroud)


Dav*_*eau 6

一般来说:

声明意味着告诉编译器存在某些东西,以便可以为它分配空间.这与定义或初始化某些东西是分开的,因为它不一定说明该东西具有什么"价值",只是它存在.在C/C++中,声明和定义之间存在很大的区别.在C#中,虽然术语仍可以类似地使用,但它的区别要小得多.

实例化字面意思是"创建一个实例".在编程中,这通常意味着创建对象的实例(通常在"堆"上).这是通过new大多数语言中的关键字完成的.即:new object();.大多数情况下,您还将保存对象的引用.即:object myObject = new object();.

初始化意味着给出初始值.在某些语言中,如果不初始化变量,则其中将包含任意(脏/垃圾)数据.在C#中,从未初始化的变量读取实际上是编译时错误.

分配只是将一个值存储到变量中.x = 5将值赋给5变量x.在某些语言中,赋值不能与声明组合,但在C#中它可以是:int x = 5;.

请注意,该语句object myObject = new object();结合了所有这四个.

  • new object()实例化一个新object对象,返回对它的引用.
  • object myObject声明一个新的object引用.
  • = 通过为其指定引用值来初始化引用变量.