C# - 创建一个固定大小的'var'数组?

OYO*_*ORF 0 c# arrays dynamic implicit-conversion

我正在尝试创建一个具有固定长度的var类型的数组.我在我创建的var Linked List类中使用它.我知道我想要创建的数组的大小,不知道什么是正确的语法?

这是代码:

public dynamic ToArray()
{
    int counter = 0;

    if (this.head == null)
        return null;
    else
        counter = 1;

    ListEntry i = this.head;
    while (i.Next != null)
    {
        counter++;
        i = i.Next;
    }

    var array = new[counter];

    i = this.head;
    for (int j = 0; j < array.Length; j++)
    {
        array[j] = i.Data;
        i = i.Next;
    }

    return array;
}
Run Code Online (Sandbox Code Playgroud)

这部分不起作用:

var array = new[counter];
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

编辑:感谢大家的投入.我必须承认,当我发布时,我对语法糖的术语知之甚少.它现在更有意义.

这篇文章背后的想法是创建一个可以处理基本值类型的动态Linked List类.

Sel*_*enç 9

我正在尝试创建一个var类型的数组

var它不是一个类型,它只是一个语法糖.implicit type definition你需要指定你的数组类型:

var array = new YourType[counter];
Run Code Online (Sandbox Code Playgroud)

使用var你让编译器推断出类型.但是在这种情况下它就像一个快捷方式.当你不确定表达式或方法的返回类型时(例如它在使用时很有用LINQ),它很有用.

var array = new[counter];
Run Code Online (Sandbox Code Playgroud)

在这一行中,如果你想创建一个可以包含任何类型元素的数组,你可以创建一个objects或者数组dynamic:

 var array = new object[counter];
Run Code Online (Sandbox Code Playgroud)

要么:

 var array = new dynamic[counter];
Run Code Online (Sandbox Code Playgroud)