为什么在C#中创建自定义数据类型时需要使用“new”关键字,但在基本数据类型(如float、int、string和bool)中不需要?

26 浏览
0 Comments

为什么在C#中创建自定义数据类型时需要使用“new”关键字,但在基本数据类型(如float、int、string和bool)中不需要?

这个问题已经在这里有答案

我不明白为什么我们需要\'new\'关键字

就像我上面问的那样,我知道new关键字会在堆上分配内存。我知道基本数据类型,如浮点数,整数,布尔等等,存储在栈上。但是,当你想在堆上分配数据时,为什么你必须使用new?当你从一个类创建一个对象时,为什么你需要使用new关键字?当你创建基本变量时,为什么不需要使用new关键字?数组也存储在堆中吗?

这个问题是特定于C#的

admin 更改状态以发布 2023年5月25日
0
0 Comments

首先,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的值赋给你的变量myIntOrig156本身在内存中占用空间,并不需要new 156进行实例化。

0