需要在(初始化)初始化之前在阵列上添加(插入)新项目

时间:2017-11-29 19:00:15

标签: c#

我有一个类似下面的代码,它通过使用以下方式拆分字符串arrayEdgeFilterRanges来初始化数组edgeFilterRanges

string[] arrayEdgeFilterRanges =  edgeFilterRanges.Split(new string[] {}, StringSplitOptions.RemoveEmptyEntries);

但是我需要将0的genraral项添加到数组的第一个 我知道我不能使用arrayEdgeFilterRanges.Insert(0, "0");,因为数组在初始化语句

上有固定的大小

您也可以告诉我如何在数组的第一个位置添加项目0

string edgeFilterRanges = "4,2,1";
string[] arrayEdgeFilterRanges = edgeFilterRanges.Split(new string[] {}, StringSplitOptions.RemoveEmptyEntries);


foreach (string i in arrayEdgeFilterRanges)
{
    System.Console.Write(i);
}

5 个答案:

答案 0 :(得分:2)

众多选择之一:

var arrayWithZero = Enumerable.Repeat(“0”, 1)
                              .Concat(array)
                              .ToArray();

答案 1 :(得分:0)

别介意我现在就找到一个简单的黑客攻击

edgeFilterRanges = "0,"+edgeFilterRanges;
  string[] arrayEdgeFilterRanges = edgeFilterRanges.Split(new string[] {}, StringSplitOptions.RemoveEmptyEntries);


foreach (string i in arrayEdgeFilterRanges)
{
    System.Console.Write(i);
}

答案 2 :(得分:0)

阵列本身在创建后无法更改,但您可以创建一个更大尺寸的新阵列,并使用Array.ConstrainedCopy()Array.CopyTo()复制值。然而,这确实表现不佳。

或者,如果您只使用foreach循环中的数组,则可以使用LINQ .Concat()方法迭代两个单独的数组,就好像它们是一个一样。

string[] prefix = new []{"0"};
foreach (string i in prefix.Concat(arrayEdgeFilterRanges)
{ ... }

答案 3 :(得分:0)

建议简化回答:

string[] arrayEdgeFilterRanges = ("0,"+edgeFilterRanges).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

答案 4 :(得分:0)

您可以使用Concat使用LINQ执行此操作。 使用您的代码,即:

string[] arrayEdgeFilterRanges = 
    new string[1] { "0" }.Concat(
        inString.Split(new string[] {}, StringSplitOptions.RemoveEmptyEntries)).ToArray();

类似的解决方案here