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


当前回答

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)"

其他回答

非空数组

var data0=新int[3]var data1=新int[3]{1,2,3}var data2=新int[]{1,2,3}var data3=新[]{1,2,3}var data4={1,2,3}不可编译。请改用int[]data5={1,2,3}。

空数组

var data6=新int[0]var data7=新int[]{}vardata8=new[]{}和int[]data9=new[]}不可编译。var data10={}不可编译。请改用int[]data11={}。

作为方法的参数

只有可以指定var关键字的表达式才能作为参数传递。

Foo(新int[2])Foo(新int[2]{1,2})Foo(新int[]{1,2})Foo(新[]{1,2})Foo({1,2})不可编译Foo(新int[0])Foo(新int[]{})Foo({})不可编译

对于以下类别:

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") };

希望这有帮助。

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

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

创建自定义类数组的示例

下面是类定义。

public class DummyUser
{
    public string email { get; set; }
    public string language { get; set; }
}

这是初始化数组的方法:

private DummyUser[] arrDummyUser = new DummyUser[]
{
    new DummyUser{
       email = "abc.xyz@email.com",
       language = "English"
    },
    new DummyUser{
       email = "def@email.com",
       language = "Spanish"
    }
};

带有表达式的平凡解决方案。注意,使用NewArrayInit,您可以只创建一维数组。

NewArrayExpression expr = Expression.NewArrayInit(typeof(int), new[] { Expression.Constant(2), Expression.Constant(3) });
int[] array = Expression.Lambda<Func<int[]>>(expr).Compile()(); // compile and call callback