int[] array1 = Class1.GetArray();
for (int i = 0; i < array1.Length;i++ )
Console.WriteLine(array1[i]);
Class1.FillArray();
for (int i = 0; i < array1.Length; i++)
Console.WriteLine(array1[i]);
В этом коде вы получаете адрес памяти первого массива int [] {2} и сохраняете его как array1. Затем, когда вы вызываете FillArray (), вы создаете новый список массивов и устанавливаете в памяти только значение _array в классе, а не array1. Это не ссылка на память в классе, а на фактический исходный массив. Итак, когда вы возвращаетесь к циклу, вы все еще смотрите на тот же блок памяти.
Вы, вероятно, должны делать это вместо:
int[] array1 = Class1.GetArray();
for (int i = 0; i < array1.Length;i++ )
Console.WriteLine(array1[i]);
Class1.FillArray();
array1 = Class1.GetArray();
for (int i = 0; i < array1.Length; i++)
Console.WriteLine(array1[i]);
Обновление
если вы измените свой Class1 таким образом, вы увидите, что вы изменяете данные в классе.
static class Class1
{
static int[] _array;
static Class1()
{
_array = new[] { 2 };
}
public static void FillArray()
{
List<int> temp = new List<int>();
for (int i = 0; i < 100; i++)
{
temp.Add(i);
}
_array = temp.ToArray();
PrintArray();
}
public static int[] GetArray()
{
PrintArray();
return _array;
}
private static void PrintArray()
{
foreach (int i in _array)
{
System.Console.Write(String.Format("{0},", i));
}
}
}
Потому что он будет распечатывать элементы в массиве после каждого вызова.