C#可以使用哪些数组初始化语法?


当前回答

Enumerable.Repeat(String.Empty, count).ToArray()

将创建重复“count”次的空字符串数组。若您希望使用相同但特殊的默认元素值初始化数组。注意引用类型,所有元素都将引用同一对象。

其他回答

无LINQ重复:

float[] floats = System.Array.ConvertAll(new float[16], v => 1.0f);

要初始化空数组,在dotnet 5.0中应该是array.empty<T>()

对于字符串

var items = Array.Empty<string>();

对于编号

var items = Array.Empty<int>();

您还可以创建动态数组,即,在创建数组之前,您可以先向用户询问数组的大小。

Console.Write("Enter size of array");
int n = Convert.ToInt16(Console.ReadLine());

int[] dynamicSizedArray= new int[n]; // Here we have created an array of size n
Console.WriteLine("Input Elements");
for(int i=0;i<n;i++)
{
     dynamicSizedArray[i] = Convert.ToInt32(Console.ReadLine());
}

Console.WriteLine("Elements of array are :");
foreach (int i in dynamicSizedArray)
{
    Console.WriteLine(i);
}
Console.ReadKey();
For Class initialization:
var page1 = new Class1();
var page2 = new Class2();
var pages = new UIViewController[] { page1, page2 };

C#中的数组创建语法是表达式:

new int[3]
new int[3] { 10, 20, 30 }
new int[] { 10, 20, 30 }
new[] { 10, 20, 30 }

在第一个例子中,大小可以是任何非负整数,并且数组元素被初始化为默认值。

在第二个例子中,大小必须是常量,并且给定的元素数量必须匹配。必须存在从给定元素到给定数组元素类型的隐式转换。

在第三种情况下,元素必须隐式转换为元素类型,大小由给定的元素数量决定。

在第四种方法中,通过计算所有具有类型的给定元素中的最佳类型(如果有)来推断数组元素的类型。所有元素都必须隐式转换为该类型。大小根据给定的元素数量确定。此语法是在C#3.0中引入的。

还有一种语法只能在声明中使用:

int[] x = { 10, 20, 30 };

元素必须隐式转换为元素类型。大小根据给定的元素数量确定。

没有一个综合指南

请参考C#4.0规范第7.6.10.4节“数组创建表达式”。