如何附加两个可为空的数组

本文关键字:数组 两个 何附加 | 更新日期: 2023-09-27 18:35:44

我在附加两个可为空的数组时感到不安。

案例如下。

int?[] array1 = new int?[1000];//having some values till index 500
int?[] array2 = new int?[100];//having some values till index 50
/*so, the total logical size of appended array should be 1000 but physical size of an array should 550 */
//I tried this...
int StoreIndex;//here i store null index number of array1.
for (int i = 0; array1.Length; i++)
{
    array1[StoreIndex + 1] = array2[i];
    if (array2[i] == null)
    {
        break;                
    }
}
//but this coding give me unhandled exception of type'System.IndexOutOfRangeException'

有人解释我在这里做错了什么吗?

如何附加两个可为空的数组

如果要连接这两个数组,只需使用 LINQ:

int?[] array1 = new int?[1000];
int?[] array2 = new int?[100];
int?[] newArray = array1.Concat (array2).ToArray();

如果您想从两者中获取所有不null值,请尝试以下操作:

int?[] array1 = new int?[1000];
int?[] array2 = new int?[100];
int[] newArray = array1.Concat (array2).Where (x => x.HasValue).Select(x => x.Value).ToArray ();

简单的方法:

array2.CopyTo(array1, StoreIndex);

其他方式:

array1.Length更改为array2.Length

int StoreIndex;//here i store null index number of array1.
for (int i = 0; i< array2.Length; i++)
{
    array1[StoreIndex + i] = array2[i];
    if (array2[i] == null)
    {
        break;                
    }
}