2014-03-25 181 views
-3

我试图打印对象(学生) 的属性之一,但是是运行错误(对象引用未设置为对象的实例) 能有人帮助我,请对象引用未设置为对象错误实例c#

while (rdStd.Read()) 
{ 

    arry[counter] = new Student(Convert.ToDouble(rdStd.GetValue(0)), Convert.ToDouble(rdStd.GetValue(1)), Convert.ToDouble(rdStd.GetValue(2))); 
    counter++; 
    TextBox3.Text += arry[counter].getlon() +"" ; //here is the error 
} 
+1

什么是'getlon'方法?你调试了你的代码吗? http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it –

+1

你认为,也许你想等待+2,直到第二次作业后? –

+0

了解如何在Visual Studio中使用调试器 - 您可以非常快速地自行解决此类问题,并且不难 –

回答

3

您访问数组元素之前增加计数器:

arry[counter] = new ... 
counter++; 
arry[counter] == null 

交换柜台:

arry[counter] = new ... 
TextBox3.Text += arry[counter]... 
counter++; 

您可以通过在代码中放置一个断点并逐步完成此操作来找到它。

+0

是的,现在它正在运行。非常感谢 – user3415707

+0

@ user3415707您应该单击左侧的复选标记如果它解决了你的问题的答案。 – tnw

1

你在做你的counter++我觉得太早了。

该代码添加一个计数器。所以当你想从1开始时,这是正确的代码。否则,将它移动到TextBox3.Text以下。

while (rdStd.Read()) 
{ 
    arry[counter] = new Student(Convert.ToDouble(rdStd.GetValue(0)), Convert.ToDouble(rdStd.GetValue(1)), Convert.ToDouble(rdStd.GetValue(2))); 
    TextBox3.Text += arry[counter].getlon() +"" ; //here is the error 

    counter++; 
} 
1

问题可能是您在访问对象之前递增计数器。

arry[counter] = new Student(...); 
counter++; // the index gets incremented 
TextBox3.Text += arry[counter].getlon() +""; // you are accessing an element not defined yet 

它可能应该是:

arry[counter] = new Student(...); 
TextBox3.Text += arry[counter].getlon() +""; 
counter++; 
相关问题