При создании массива ссылочного типа (MyArrObj
в вашем случае) требуется выделить память для каждого элемента массива (используя оператор new
) в дополнение к распределению памяти для самого массива.
Массив ссылочных типов
Например, если вы создаете MyArrObj массив,
MyArrObj[] objectArray = new MyArrObj[3];
Затем элементы массива objectArray[0]
к objectArray[2]
все равно будет null
. Требуется отдельная инициализация.
objectArray[0] = new MyArrObj();
Только тогда, когда будет сделано выше шаг, который вы можете получить доступ к членам элемента массива.
objectArray[0].SomeMethod();
SomePropertyType readProperty = objectArray[0].SomeProperty;
Если пропустить инициализацию элементов массива, то при попытке доступа к члену элемента массива будет дать System.NullReferenceException
objectArray[0].SomeMethod(); // throws NullReferenceException
потому что objectArray[0];
является null
.
Вы можете проверить это с помощью
if(objectArray[0] == null)
{
Console.WriteLine("objectArray[0] is null");
}
массива типов значений
Если вы знаете, массив, прежде чем руки, то вы можете использовать инициализацию указывала @clonked.
Для типов значений, как встроенные типы (как int, float
, структуры и т.д., вам не нужно инициализировать каждый элемент массива.
Например, если вы создаете целочисленный массив,
int[] intArray = new int[3];
Тогда элементы массива intArray[0]
до intArray[2]
имеют memoery выделены и значения могут быть отнесены к ним.
intArray [0] = 1;
Проверьте GetData()
Таким образом, ваш метод GetData()
должен включать в себя код, как это,
private MyArrObj[] GetData()
{
int numberOfObjects = GetNumberOfObjects(); // Get the number of objects at runtime
MyArrObj[] objectArray = new MyArrObj[numberOfObjects];
for (int i = 0; i < numberOfObjects; i++)
{
objectArray[i] = new MyArrObj();
}
return objectArray;
}
Дополнительная информация
Показать трассировку стека. Вы уверены, что NRE не находится в реализации «GetData»? –
Также покажите нам, что делает GetData. –
Возможный дубликат [Что такое исключение NullReferenceException в .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –