2014-01-06 1 views
0

Ниже приведен мой код,Чтобы добавить элемент в список

List<float?> LValues = new List<float?>(); 
List<float?> IValues = new List<float?>(); 
List<float?> BValues = new List<float?>(); 
List<HMData>[] data = new List<HMData>[4]; 
List<HMData>[] Data = new List<HMData>[7]; 
float? Value_LfromList = 0; 
float? Value_IfromList = 0; 
float? Value_BfromList = 0; 
int indexer=0; 

foreach (var item in Read_xml_for_childobjects_id.Root.Descendants("object")) 
{ 
data[indexer] = new List<HMData>(); // Error occuring on this line 
for (int k = 0; k < 7; k++) 
    { 
    Value_LfromList = LValues.ElementAt(k); 
    Value_IfromList = IValues.ElementAt(k); 
    Value_BfromList = BValues.ElementAt(k); 
    Data[k].Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList }); 
    } 
    indexer++; 
} 

Как только я намерен добавить элемент в списке данных в следующей строке,

Data[k].Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList }); 

Я получаю сообщение об ошибке, как Object reference not set to instant of object,

Я хочу быть выход, как показано в следующей ссылке вопрос, Result required as shown in this question,

Я пробовал много способов, но не смог это сделать, очень поможем, если предоставлено, спасибо.

+1

Первая проблема - никогда не имеют двух переменных 'data' и' Data'. Это убийца для удобочитаемости. Какая * полезная * разница между этими двумя означает быть между этими переменными? –

+0

На самом деле .. Я просто пытался заставить его работать, изначально был только один список данных, но позже я создал еще одно, мое требование странно и кажется невозможным, но тогда в кодировании все возможно, просто я могу неправильно где-то в логике. Не могли бы вы проверить ссылку, указанную в вышеупомянутом вопросе, на другой вопрос и просто рассказать мне, что я думаю, чтобы достичь его возможного ... – Reshma

+0

Ну, с кодом, который трудно читать, не собирается облегчить работу. Вы * вы даже знаете разницу между тем, что должны означать две переменные? –

ответ

6
  1. Ваш код кошмар. Вы должны действительно подумать о рефакторинге ...

  2. Вы должны инициализировать списки в пределах Data массива.

    List<HMData>[] Data = new List<HMData>[7]; 
    for(int i = 0; i < 7; i++) 
        Data[i] = new List<HMData>(); 
    
  3. Есть множество других проблем и вопросов, которые необходимо задать (например, в чем разница между data и Data?, Почему этот массив размера явно?). Без этих знаний каждый совет может быть недостаточным для решения вашей реальной проблемы.

+0

, пожалуйста, перейдите по этой ссылке [http://stackoverflow.com/questions/20905207/adding-values-to-list] и, пожалуйста, скажите мне, возможно ли достичь желаемого результата ... Я закончил в кошмаре, добиваясь этого выхода и я очень сожалею о путанице. – Reshma

-2

вам просто нужно объявить список, как

List<HMData> Data = new List<HMData>(); 

и добавить новый элемент в список,

Data.Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList }); 
+1

Это даже не компилируется - вы объявляете переменную массива, а затем пытаетесь присвоить ей простой «список» 'справка. –

+0

исправлено сейчас. – Cris

+0

Теперь вы предполагаете, что OP действительно не хочет массива списков ... это не ясно для меня на основе вопроса. –