C# 如何在C中多次复制数组的值#
我有一个C# 如何在C中多次复制数组的值#,c#,.net,arrays,string,initialization,C#,.net,Arrays,String,Initialization,我有一个数组 string[] AddrArray = new string[] { truncString }; 它只包含一个值{Addr:n} 如何在同一数组中复制此值n次数。 提前感谢一种方法是使用可枚举。重复以获得n个数组,然后选择many以将它们展平为一个包含n个元素的数组。即使数组包含多个元素,此操作也有效: AddrArra = Enumerable.Repeat(AddrArra, n).SelectMany(arr => arr).ToArray(); 但我更喜欢可
数组
string[] AddrArray = new string[] { truncString };
它只包含一个值{Addr:n}
如何在同一数组中复制此值n
次数。
提前感谢一种方法是使用
可枚举。重复以获得n个数组,然后选择many以将它们展平为一个包含n个元素的数组。即使数组包含多个元素,此操作也有效:
AddrArra = Enumerable.Repeat(AddrArra, n).SelectMany(arr => arr).ToArray();
但我更喜欢可读且更高效的自定义扩展方法:
public static IEnumerable<T> DuplicateItems<T>(this IEnumerable<T> items, int factor)
{
if (items == null) throw new ArgumentNullException("items");
if (factor <= 0) throw new ArgumentException("factor must be >= 1", "factor");
if (factor == 1) return items;
List<T> list = new List<T>();
using (var enumerator = items.GetEnumerator())
{
for (int i = 0; i < factor; i++)
{
while (enumerator.MoveNext())
list.Add(enumerator.Current);
enumerator.Reset();
}
}
return list;
}
一种方法是使用
Enumerable。重复获得n个数组,然后选择many
将它们展平为1个包含n个元素的数组。即使数组包含多个元素,此操作也有效:
AddrArra = Enumerable.Repeat(AddrArra, n).SelectMany(arr => arr).ToArray();
但我更喜欢可读且更高效的自定义扩展方法:
public static IEnumerable<T> DuplicateItems<T>(this IEnumerable<T> items, int factor)
{
if (items == null) throw new ArgumentNullException("items");
if (factor <= 0) throw new ArgumentException("factor must be >= 1", "factor");
if (factor == 1) return items;
List<T> list = new List<T>();
using (var enumerator = items.GetEnumerator())
{
for (int i = 0; i < factor; i++)
{
while (enumerator.MoveNext())
list.Add(enumerator.Current);
enumerator.Reset();
}
}
return list;
}
int repeatedcount=5;
字符串输入=“{Addr:n}”;
string[]AddrArray=Enumerable.Repeat(输入,repeatedCount).ToArray();
int repeatedCount=5;
字符串输入=“{Addr:n}”;
string[]AddrArray=Enumerable.Repeat(输入,repeatedCount).ToArray();
使用可枚举。在阵列初始化中重复,可以简化任务:
string[] repeatedStrArray = Enumerable.Repeat(truncString, N).ToArray(); //specify N with the number of times you want
使用可枚举。在阵列初始化中重复,可以简化任务:
string[] repeatedStrArray = Enumerable.Repeat(truncString, N).ToArray(); //specify N with the number of times you want
你能澄清你的问题吗?现在还不清楚你到底想做什么,你的问题是什么。您需要如何“复制”它?ut应该是一个包含N个元素而不是一个元素的新数组吗?或者应该放大并复制字符串?将此项在for循环中添加到数组n
次?可能重复,就像我说的,我只有一个数组字符串[]AddrArray=新字符串[]{truncString};只持有一个值{Addr:n}。我想重复这个值,比如{Addr:n}{Addr:n}{Addr:n}n次你能澄清一下你的问题吗?现在还不清楚你到底想做什么,你的问题是什么。您需要如何“复制”它?ut应该是一个包含N个元素而不是一个元素的新数组吗?或者应该放大并复制字符串?将此项在for循环中添加到数组n
次?可能重复,就像我说的,我只有一个数组字符串[]AddrArray=新字符串[]{truncString};只持有一个值{Addr:n}。我想复制这个值,比如{Addr:n}{Addr:n}{Addr:n}n时间数如果数组包含多个项怎么办?即使它在这种情况下起作用,问题是如何重复一个数组而不是一个字符串(也可能是一个字符串)。@TimSchmelter事实上,因为问题不是那么清楚,我们所有人在回答某些事情时都假设。在我的例子中,假设truncString是字符串
。我知道你为什么要用SelectMany
将结果展平,以防万一。我想说的是,这也是一个有效的选项——从这个意义上说更健壮。我只是想知道,如果第二个字符串不可能,OP为什么要使用数组。如果数组包含多个项怎么办?即使它在这种情况下起作用,问题是如何重复一个数组而不是一个字符串(也可能是一个字符串)。@TimSchmelter事实上,因为问题不是那么清楚,我们所有人在回答某些事情时都假设。在我的例子中,假设truncString是字符串
。我知道你为什么要用SelectMany
将结果展平,以防万一。我想说的是,这也是一个有效的选择——从这个意义上说,它更健壮。我只是想知道,如果不可能使用第二个字符串,OP为什么还要使用数组。