如何使用另一个数组创建和初始化数组?

Ash*_*ppa 13 c# arrays

要使用另一个数组创建和初始化数组,我目前执行此操作:

void Foo( int[] a )
{
    int[] b = new int[ a.Length ];
    for ( int i = 0; i < a.Length; ++i )
        b[ i ] = a[ i ];

    // Other code ...
}
Run Code Online (Sandbox Code Playgroud)

在C#中使用更短或更惯用的方法吗?

如果可以在单个语句中完成,例如在C++中,那将是很好的:

vector<int> b( a );
Run Code Online (Sandbox Code Playgroud)

如果这不能在一个声明中完成,我将采取我得到的:-)

Ree*_*sey 17

我喜欢使用LINQ:

int[] b = a.ToArray();
Run Code Online (Sandbox Code Playgroud)

话虽这么说,Array.Copy确实有更好的性能,如果这将在紧密循环中使用,等等:

int[] b = new int[a.Length];
Array.Copy(a, b, a.Length);
Run Code Online (Sandbox Code Playgroud)

编辑:

如果可以在单个语句中完成,例如在C++中,那将是很好的:

向量b(a);

这个的C#版本是:

List<int> b = new List<int>(a);
Run Code Online (Sandbox Code Playgroud)

List<T>是C#的等价物std::vector<T>.上面构造函数适用于任何IEnumerable<T>,包括另一个List<T>,数组(T[])等.


Emm*_*l N 6

使用Array.Copy复制数组

     int[] source = new int[5];
     int[] target = new int[5];
     Array.Copy(source, target, 5);
Run Code Online (Sandbox Code Playgroud)