声明,实例化,初始化和分配对象的含义
从技术上讲,在C#中声明 , 实例化 , 初始化和分配对象的术语的含义和区别是什么?
我想我知道分配的意义,但我没有正式的定义。
在msdn中,有人说“创建对象的行为称为实例化”。 但创造的意义对我来说似乎含糊不清。 你可以写
int a;
是a
然后创建?
声明 – 声明变量意味着向程序引入新变量。 您可以定义其类型和名称。
int a; //a is declared
实例化 – 实例化类意味着创建类的新实例。 来源 。
MyObject x = new MyObject(); //we are making a new instance of the class MyObject
初始化 – 初始化变量意味着为其分配初始值。
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
分配 – 分配给变量意味着为变量提供值。
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
一般来说:
声明意味着告诉编译器存在某些东西,以便可以为它分配空间。 这与定义或初始化某些东西是分开的,因为它不一定说明事物具有什么“价值”,只是它存在。 在C / C ++中,声明和定义之间存在很大的区别。 在C#中,虽然术语仍可以类似地使用,但它的区别要小得多。
实例化字面意思是“创建一个实例”。 在编程中,这通常意味着创建对象的实例(通常在“堆”上)。 这是通过大多数语言中的new
关键字完成的。 即: new object();
。 大多数情况下,您还将保存对象的引用。 即: object myObject = new object();
。
初始化意味着给出初始值。 在某些语言中,如果不初始化变量,则会在其中包含任意(脏/垃圾)数据。 在C#中,从未初始化的变量读取实际上是编译时错误。
分配只是将一个值存储到变量中。 x = 5
将值x = 5
赋给变量x
。 在某些语言中,赋值不能与声明组合,但在C#中它可以是: int x = 5;
。
注意语句object myObject = new object();
结合了所有这四个。
-
new object()
实例化一个新的object
对象,返回对它的引用。 -
object myObject
声明一个新的object
引用。 -
=
通过为其指定引用值来初始化引用变量。