[英]replicating an array and storing it in another array
我有
string[] a = {"1","2","3","4","5"};
我想创建第二个阵列,并将它保存* 3阵列什么a
了。
因此,第二个数组如下所示:
string[] b = {"1","2","3","4","5","1","2","3","4","5","1","2","3","4","5"};
我当时在考虑使用Array.Copy
,但是还有另一种方法吗?
这是一个有趣的LINQ语句,该语句可获取所需的输出:
b = Enumerable.Range(0, 3).SelectMany(p => a).ToArray();
下面的示例比使用Array.Copy的效果要差-它只是在完成您所要求的方法。 通过非常简单的string[] newArray = a.ArrayRepeat(3);
调用即可获得最终结果string[] newArray = a.ArrayRepeat(3);
using System;
using System.Collections.Generic;
using System.Linq;
namespace ArrayRepeat
{
public static class ArrayHelper
{
public static IEnumerable<T> Repeater<T>(this T[] a, int reps)
{
for (int i = 0; i < reps; i++)
{
foreach (var item in a)
{
yield return item;
}
}
}
public static T[] ArrayRepeat<T>(this T[] a, int reps)
{
return a.Repeater<T>(reps).ToArray();
}
}
class Program
{
static void Main(string[] args)
{
string[] a = { "1", "2", "3", "4", "5" };
string[] newArray = a.ArrayRepeat(3);
var pressKeyToExit = Console.ReadKey();
}
}
}
这是另一种方法,虽然它的性能仍然不如Array.Copy,但它看起来并不老套,看起来干净,甚至可能有用。
using System;
using System.Linq;
namespace RepeatArray
{
class Program
{
static void Main(string[] args)
{
string[] a = { "1", "2", "3", "4", "5" };
string[] newArray = Enumerable.Repeat(a, 3).SelectMany(x => x).ToArray();
var pressKeyToExit = Console.ReadKey();
}
}
}
我应该给@cmcquillan提供道具。 我试图弄清楚如何解决他的SelectMany(p => x)
的古怪之处,后者只是丢弃p
。 但是,这个想法来自他。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.