标签: c#
C#中的数组,包括n维数组和锯齿数组,都使用new运算符声明。这是否意味着C#仅利用动态数组?
P.S:所谓动态数组,是指动态分配的数组,它们的值在堆中,而指针在堆栈中引用它们。
答案 0 :(得分:2)
是的,通常在堆中动态分配C#中的数组。所有数组类型都继承自System.Array(引用类型)。
System.Array
尽管可以使用stackalloc关键字在堆栈上分配数组,这需要不安全的上下文,通常用于与本机API等的互操作性。
stackalloc
答案 1 :(得分:0)
c#中的数组是固定大小的(我假设动态表示动态可调整大小)。要创建“动态”集合,可以使用List<T>。在幕后,List<T>由数组支持,该数组随着列表的增长而重新分配并复制。
List<T>
之所以使用new运算符是因为它表示运行时正在为一个对象(在本例中为Array对象)分配空间。 new关键字用于非编译时常量(即硬编码数字,布尔值或字符串)的任何内容。