在 C# 中,我有三个数组 、string[] array1
、 2 和 3 ,它们都有不同的值。我很乐意做我可以在 php 中做的事情:
$array = array();
$array[] .= 'some value';
在 C# 中执行此操作的等效方法是什么?
在 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>
使用而不使用数组通常会更好。
您可以创建一个列表并将数组值添加到其中,然后将该列表转换回数组。
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();
您可以使用动态列表List<string>
。你可以做
List<string> TotalList = array1.ToList();
然后你可以TotalList.AddRange(array2)
等等....
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;
使用 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();