C#:哪些数据类型需要NEW来分配内存?

use*_*676 4 c# variables memory-management new-operator

我想更好地理解使用'new'为变量分配内存与不需要new的情况之间的区别.

当我宣布

int i; // I don't need to use new.
Run Code Online (Sandbox Code Playgroud)

List<string> l = new List<string>();
Run Code Online (Sandbox Code Playgroud)

说"new int()"是否有意义?

Ree*_*sey 6

您将需要使用new来分配任何引用类型(类).

可以在没有new的情况下声明任何值类型(例如int或structs).但是,您仍然可以使用新的.以下内容有效:

int i = new int();
Run Code Online (Sandbox Code Playgroud)

请注意,在初始化之前,您无法直接访问值类型.使用结构,使用new TheStructType()通常很有价值,因为它允许您充分利用结构成员,而无需首先显式初始化每个成员.这是因为构造函数执行初始化.对于值类型,默认构造函数始终将所有值初始化为等效值0.

此外,使用结构,您可以使用new非默认构造函数,例如:

MyStruct val = new MyStruct(32, 42);
Run Code Online (Sandbox Code Playgroud)

这提供了一种初始化结构内部值的方法.话虽如此,这里不需要,只有一个选项.