你可以使用LINQ來解決這個問題。例如,
void Main()
{
int[] a1 = new int[5];
int[] a2 = new int[5];
for (int i = 0; i < 5; i++)
{
a1[i] = i;
a2[i] = i + 5;
}
IEnumerable<int> a3;
a3 = MergeFunction(a1, a2);
Console.WriteLine(a3.ToArray()[0] + "");
a1[0] = 10;
Console.WriteLine(a3.ToArray()[0] + "");
Console.ReadKey();
}
public IEnumerable<int> MergeFunction(int[] a1, int[] a2)
{
return a1.Union(a2);
}
由於linq的延遲執行,它也顯示了基本數組的變化。
考慮到這一點,您可以編寫一個小類,使項目訪問的語法類似於項目訪問的數組語法。例如:
void Main()
{
int[] a1 = new int[5];
int[] a2 = new int[5];
for (int i = 0; i < 5; i++)
{
a1[i] = i;
a2[i] = i + 5;
}
ArrayMerger<int> a3 = new ArrayMerger<int>(a1,a2);
Console.WriteLine(a3[0] + "");
a1[0] = 10;
Console.WriteLine(a3[0] + "");
a2[0] = 15;
Console.WriteLine(a3[5] + "");
}
public class ArrayMerger<T>
{
private readonly IEnumerable<T> arrayUnion;
public ArrayMerger(T[] array1, T[] array2)
{
arrayUnion = array1.Union(array2);
}
public T this[int i]
{
get
{
return arrayUnion.ElementAt(i);
}
}
}
那麼什麼是碼這個問題?你認爲什麼是「合併」? –