合并数组或附加到数组

时间:2013-04-19 16:53:13

标签: c# arrays

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

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

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

6 个答案:

答案 0 :(得分:7)

在C#中,您通常使用List<string>代替string[]

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

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

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

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

var array = list.ToArray();

只有在需要阵列时才需要这样做(例如使用第三方API)。如果你知道你将使用不同大小的集合,那么通常最好总是坚持List<T>而不是使用数组。

答案 1 :(得分: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();

答案 2 :(得分:0)

您可以使用动态列表List<string>。你可以做到

List<string> TotalList = array1.ToList();

然后你可以TotalList.AddRange(array2)等等......

答案 3 :(得分:0)

如果您只想合并数组

使用linq .Concat

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

答案 4 :(得分:0)

List<T>或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 :(得分:0)

简单使用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();