为什么在C#中创建自定义数据类型时需要使用“new”关键字,但在基本数据类型(如float、int、string和bool)中不需要?
为什么在C#中创建自定义数据类型时需要使用“new”关键字,但在基本数据类型(如float、int、string和bool)中不需要?
这个问题已经在这里有答案:
就像我上面问的那样,我知道new关键字会在堆上分配内存。我知道基本数据类型,如浮点数,整数,布尔等等,存储在栈上。但是,当你想在堆上分配数据时,为什么你必须使用new?当你从一个类创建一个对象时,为什么你需要使用new关键字?当你创建基本变量时,为什么不需要使用new关键字?数组也存储在堆中吗?
这个问题是特定于C#的
admin 更改状态以发布 2023年5月25日
首先,new
关键字并不会在堆上分配内存。new
关键字用于实例化一个实例,不管是基本类型还是其他类型。
其次,如果你有这样一个代码:
ClassDefined myClassOrig = new ClassDefined(); ClassDefined myClassCopy = myClassOrig;
你并没有使用new
关键字将myClassOrig
赋给myClassCopy
。对于整型也是同样的情况。
你得到的是:
int myIntOrig = 156; int myClassCopy = myIntOrig;
其他类型也是同样的情况,比如:
string myStringExample = "some string"; Vector3 myVectorExample = Vector3.zero;
事实上,156
、"some string"
或者Vector3.zero
都是(就像new ClassDefined()
一样)某些东西的实例/值,你正在将这个实例/值赋给你的变量。
当你使用一个整数值156
时,你正在将156
的值赋给你的变量myIntOrig
。156
本身在内存中占用空间,并不需要new 156
进行实例化。