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


当前回答

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节“数组创建表达式”。

其他回答

hi只是为了添加另一种方式:从此页面:https://learn.microsoft.com/it-it/dotnet/api/system.linq.enumerable.range?view=netcore-3.1

如果您想生成0到9的指定范围内的整数序列,可以使用此表单:

using System.Linq
.....
public int[] arrayName = Enumerable.Range(0, 9).ToArray();
For Class initialization:
var page1 = new Class1();
var page2 = new Class2();
var pages = new UIViewController[] { page1, page2 };

对于以下类别:

public class Page
{

    private string data;

    public Page()
    {
    }

    public Page(string data)
    {
        this.Data = data;
    }

    public string Data
    {
        get
        {
            return this.data;
        }
        set
        {
            this.data = value;
        }
    }
}

您可以按如下方式初始化上述对象的数组。

Pages = new Page[] { new Page("a string") };

希望这有帮助。

无LINQ重复:

float[] floats = System.Array.ConvertAll(new float[16], v => 1.0f);
int[] array = new int[4]; 
array[0] = 10;
array[1] = 20;
array[2] = 30;

or

string[] week = new string[] {"Sunday","Monday","Tuesday"};

or

string[] array = { "Sunday" , "Monday" };

并且在多维阵列中

    Dim i, j As Integer
    Dim strArr(1, 2) As String

    strArr(0, 0) = "First (0,0)"
    strArr(0, 1) = "Second (0,1)"

    strArr(1, 0) = "Third (1,0)"
    strArr(1, 1) = "Fourth (1,1)"