如何使用自定义类型初始化数组

Luk*_*101 10 c# arrays

如何初始化此自定义类型数组:

PostType[] q = new PostType[qArray.Length];

//initialize array
for( int x = 0; x < qArray.Length; x++)
    q[x] = new PostType();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来初始化这个数组?

Mar*_*ers 5

你这样做的方式很好:

PostType[] q = new PostType[qArray.Length];
for (int i = 0; i < q.Length; i++)
    q[i] = new PostType();
Run Code Online (Sandbox Code Playgroud)

我改变的一件事是将索引从x重命名为i,因为我觉得这更容易阅读,尽管这是一个主观的事情.

我改变的另一件事是for循环结束条件应该取决于q的长度,而不是qArray的长度.这样做的原因是,如果您决定将第一行更改为使用不同的长度而不是qArray.Length,则使用您的方法,您必须记住也要更改第二行.使用修改后的代码,您只需更新第一行代码,其余代码无需修改即可使用.

您也可以使用Linq执行此操作:

PostType[] q = Enumerable.Range(0, qArray.Length)
                         .Select(_ => new PostType())
                         .ToArray();
Run Code Online (Sandbox Code Playgroud)

但是对于大型阵列,在我看来这会慢一些并且不容易阅读(特别是如果你之前没有看过它).如果我是你,我想我可能会坚持使用第一种方法.