要使用另一个数组创建和初始化数组,我目前执行此操作:
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[])等.
使用Array.Copy复制数组
int[] source = new int[5];
int[] target = new int[5];
Array.Copy(source, target, 5);
Run Code Online (Sandbox Code Playgroud)