Below is my problem. I've narrowed it down to one thing: my
unfamiliarity on how class instances are instantiated in an array.
This is because the "un-array" / "non-array" version of the program
works fine (see below). So what is the problem? I get a null
reference on the line below at *!&!* "Unhandled Exception:
System.NullReferenceException: Object reference not set to
an instance of an object.?
RL
static void Main(string[] args)
{
int Array_Max1 = 5; // the size of the array
NodeTreeMgr[] myNodeTreeMgr = new NodeTreeMgr[Array_Max1];
//the array version of the class (compiles but gets runtime error)
// the problem is perhaps here--somehow the 'new' is not working in
this array
NodeTreeMgr mySingleNodeTreeMgr = new NodeTreeMgr();
// the non-array version of the class (works fine)
MyClass rootClass = new MyClass(123); //unimportant nested
class
Node[] myrootnode = new Node[Array_Max1];
// a class on the "LHS" of the "=" below
Node[] myBADrootnode = new Node[Array_Max1];
//same as previous line
for (int i = 0; i < 5; i++) //start of loop
{
myrootnode[i] =
mySingleNodeTreeMgr.TheNodeTree.NodeFactory(rootCl ass);
//works fine in runtime--since the RHS is a "non-array"
Console.WriteLine("success! myrootnode[{0}].child_TorF is {1}", i,
myrootnode[i].child_TorF); //works fine, returns a member bool
"false"
// start of problem code: *!&!* next line a problem, exception is
thrown
myBADrootnode[i] =
myNodeTreeMgr[i].TheNodeTree.NodeFactory(rootClass);
// if the above line is commented out, program works fine (loop runs
five times)
Console.WriteLine("NO success! WON'T WORK! (runtime
error): myBADrootnode[{0}].child_TorF is {1}", i,
myBADrootnode[i].child_TorF); //doesn't work
}
}
////////// output
success! myrootnode[0].child_TorF is False
Unhandled Exception: System.NullReferenceException: Object reference
not set to
an instance of an object.
Press any key to continue . . .
/////////////////////// FYI OTHER CLASSES BELOW /////
class NodeTreeMgr
{
public NodeTree TheNodeTree;
public Node NodeFactory(MyClass MyClaPass) //standard "Node
factory" class
{
Node returnNode = new Node();
returnNode.Val = MyClaPass;
return returnNode;
}
}
///////////////////////
class Node
{
public bool child_TorF;
public Node()
{
child_TorF = false;
}
}
private MyClass val; //val needed for below "Val"
public MyClass Val
{
get
{
return val;
}
set
{
val = value; //taking advantage of 'special variable
'value'
}
}
}
public class MyClass
{
public int j; public String STR1;
public MyClass() { STR1 = "hi"; j = 1; }
public MyClass(int jj) { j=jj;}
}
///////////////////////