string partName = "";
            string confName = "";
            string workName = "";
            foreach (string[] e in instance.aWkshpJag)
            {
                foreach (string[] ex in instance.aPartJag)
                {
                    if (e[0] == ex[0])
                    {
                        partName = ex[1] + " " + ex[2];
                        confName = ex[4];
                        break;
                    }
                }
                foreach (string[] exr in instance.aWorkJag)
                {
                    if (e[1] == exr[0])
                    {
                        workName = exr[2];
                    }
                }
                treeViewWkshp.BeginUpdate();
                treeViewWkshp.Nodes[confName].Nodes[workName].Nodes.Add(partName);
                treeViewWkshp.EndUpdate();

            }

Это вызывает нулевое исключение, хотя все переменные имеют значения. Причины, почему это может быть?

-EDIT- Добавлен еще блок кода.

Нулевое исключение выбрасывается в

treeViewWkshp.Nodes[confName].Nodes[workName].Nodes.Add(partName);

System.NullReferenceException was unhandled
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=FBLA_App
c#
1
SoulOfSet 28 Фев 2014 в 21:26

2 ответа

Лучший ответ

Если вы переписываете ошибочную строку таким образом, вы все равно получите тот же NullReferenceException, но он будет в строке, содержащей только одну возможность нулевой ссылки.

var confNode = treeViewWkshp.Nodes[confName];
var workNode = confNode.Nodes[workName];
var workNodeChildren = workNode.Nodes
workNodeChildren.Add(partName);
0
Richard Ev 28 Фев 2014 в 17:30

Очевидно, не все переменные имеют значения. Попробуйте разделить свою строку кода, чтобы объявлять и обращаться к одному узлу за раз.

1
Crono 28 Фев 2014 в 17:30