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

标签 c# variables memory-management new-operator

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

当我声明

int i; // I don't need to use new.

但是

List<string> l = new List<string>();

说“new int()”有意义吗?

最佳答案

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

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

int i = new int();

请注意,您不能直接访问一个值类型,直到它被初始化。对于结构,使用 new TheStructType() 通常很有值(value),因为它允许您充分利用结构成员,而不必先显式初始化每个成员。这是因为构造函数进行了初始化。对于值类型,默认构造函数总是将所有值初始化为 0 的等价物。

此外,对于结构,您可以将 new 与非默认构造函数一起使用,例如:

MyStruct val = new MyStruct(32, 42);

这提供了一种在结构内部初始化值的方法。也就是说,这里不是必需的,只是一个选项。

关于C#:哪些数据类型需要NEW来分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098292/

相关文章:

ios - Cocos2D 和 iOS : rule of thumb to estimate memory usage

c# - 如何在 ASP.NET 应用程序中调用一些异步代码_start

c# - 页面加载后,Xamarin WebView.CanGoBack 和 CanGoForward 始终返回 false

c# - 编程语言可以成为平台的一部分吗? (C# 和 Java 相关)

php - 使用PHP的“注意: undefined variable ”,“注意: undefined index ”和“注意: undefined offset ”

perl - 为什么我的脚本在使用 mod_perl 运行时会使用这么多内存?

c# - 从列表的子集中高效地进行选择

ruby - 将呈现的部分分配给实例变量

PHP session 变量未传递到下一页

asp.net - 使用 umbraco 的 iis 应用程序池过度使用内存