Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中多次复制数组的值#_C#_.net_Arrays_String_Initialization - Fatal编程技术网

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为什么还要使用数组。