0

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

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

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

4

6 回答 6

7

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

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

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

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

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

var array = list.ToArray();

但是,仅当您需要数组时才需要这样做(例如使用第三方 API)。如果您知道您将使用大小不同的集合,那么始终坚持List<T>使用而不使用数组通常会更好。

于 2013-04-19T16:55:13.257 回答
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();
于 2013-04-19T16:57:36.687 回答
0

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

使用 linq .Concat

 array1 = array1.Concat(array2).Concat(array3).ToArray();
于 2013-04-19T16:56:40.730 回答
0

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

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

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

于 2013-04-19T16:55:55.403 回答
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;
于 2013-04-19T17:00:27.810 回答
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();
于 2013-04-19T17:03:16.400 回答