【问题标题】:Merging Arrays or Appending to an array合并数组或追加到数组
【发布时间】:2013-04-13 03:34:37
【问题描述】:

在 C# 中,我有三个数组,string[] array1、2 和 3,它们都有不同的值。我很乐意做我可以在 php 中做的事情:

$array = array(); $array[] .= 'some value';

在 C# 中执行此操作的等效方法是什么?

【问题讨论】:

标签: c# arrays


【解决方案1】:

在 C# 中,您通常会使用 List<string> 而不是 string[]

这将允许您编写list.Add("some value") 并将动态“增长”列表。

请注意,如果需要,可以很容易地在列表和数组之间进行转换。 List<T> 有一个构造函数,它接受任何 IEnumerable<T>,包括一个数组,因此您可以通过以下方式从数组中创建一个列表:

var list = new List<string>(stringArray);

您可以通过以下方式将列表转换为数组:

var array = list.ToArray();

这仅在您需要数组时才需要,但是(例如使用第三方 API)。如果您知道要使用大小不同的集合,通常最好始终坚持使用List&lt;T&gt; 而不要使用数组。

【讨论】:

  • 如果您确实需要使用数组(例如,如果您从某个第三方库获取数组,并且需要将结果作为数组发送回该库) ),List 构造函数可以接受一个数组,list.AddRange 也可以,当你完成后,你可以调用 list.ToArray();
  • @neminem 是的。大多数时候,在更改语言时,这不是什么大问题。通常更多的是学习每种语言和框架如何处理基础知识,但是是的,两者之间的转换相当简单。
【解决方案2】:

您可以创建一个列表并将数组值添加到其中,然后将该列表转换回数组。

int[] array1 = { 1, 2, 3, 4, 5 };
int[] array2 = { 6, 7, 8, 9, 10 };

// Create new List of integers and call AddRange twice
var list = new List<int>();
list.AddRange(array1);
list.AddRange(array2);

// Call ToArray to convert List to array
int[] array3 = list.ToArray();

【讨论】:

    【解决方案3】:

    您可以使用动态列表List&lt;string&gt;。你可以这样做

    List&lt;string&gt; TotalList = array1.ToList();

    那你可以TotalList.AddRange(array2)等等....

    【讨论】:

      【解决方案4】:

      List&lt;T&gt; 或 LINQ 可能是最简单的解决方案,但您也可以使用老式方法:

      // b1 is now 5 bytes
      byte[] b1 = Get5BytesFromSomewhere();
      
      // creating a 6-byte array
      byte[] temp = new byte[6];
      
      // copying bytes 0-4 from b1 to temp
      Array.copy(b1, 0, temp, 0, 5);
      
      // adding a 6th byte
      temp[5] = (byte)11;
      
      // reassigning that temp array back to the b1 variable
      b1 = temp;
      

      【讨论】:

        【解决方案5】:

        如果你只是想合并你的数组

        使用 linq .Concat

         array1 = array1.Concat(array2).Concat(array3).ToArray();
        

        【讨论】:

          【解决方案6】:

          轻松使用 linq:

          int[] array1 = { 1, 2, 3, 4, 5 };
          int[] array2 = { 6, 7, 8, 9, 10 };
          int[] array3 = { 3, 4 ,5, 9, 10 };
          
          var result = array1
              .Concat(array2)
              .Concat(array3)
              .ToArray();
          

          【讨论】:

            猜你喜欢
            • 2012-07-05
            • 2019-05-05
            • 1970-01-01
            • 1970-01-01
            • 2016-08-23
            • 1970-01-01
            • 1970-01-01
            • 2011-09-03
            • 2016-07-21
            相关资源
            最近更新 更多