C# 对象引用未设置为对象的实例。出现NullReferenceException
我对.Net非常陌生,不知道如何解决我的大部分问题。这是我的问题。我创建了一个表单来执行脚本列表。数据将来自数据库。我的问题是,当我调试时,我在这段代码上得到了C# 对象引用未设置为对象的实例。出现NullReferenceException,c#,winforms,nullreferenceexception,C#,Winforms,Nullreferenceexception,我对.Net非常陌生,不知道如何解决我的大部分问题。这是我的问题。我创建了一个表单来执行脚本列表。数据将来自数据库。我的问题是,当我调试时,我在这段代码上得到了NullReferenceException错误 private void Load_RefreshForm_ScriptMgmt() { try { SqlCommand ObjCmd = new SqlCommand(); SqlConnection ObjConn = new SqlC
NullReferenceException
错误
private void Load_RefreshForm_ScriptMgmt()
{
try
{
SqlCommand ObjCmd = new SqlCommand();
SqlConnection ObjConn = new SqlConnection();
this.Ds_Settings1.Tables["Settings_RefreshForm_ScriptMgmt_SelectALL"].Clear();
ObjConn.ConnectionString = this.MainConnection;
ObjCmd.CommandType = CommandType.StoredProcedure;
ObjCmd = new SqlCommand(this.da_LoadScripts.SelectCommand.CommandText.ToString(), ObjConn);
this.da_LoadScripts.SelectCommand = ObjCmd;
this.da_LoadScripts.Fill(this.Ds_Settings1);
}
catch (Exception exception)
{
ProjectData.SetProjectError(exception);
this.DisplayOnly_ErrorHandler("ERROR LOADING REFRESH SCRIPTS ", exception.Message, MsgBoxStyle.Critical);
ProjectData.ClearProjectError();
}
}
通过在try块的第一行设置断点并跟踪执行,可以看到哪一行抛出该异常 有许多行可以抛出该异常。 this.Ds_Settings1可以为空,this.da_LoadScripts也可以为空。
如果这些对象中有一个为null,并且您试图对其调用函数或访问属性,则会出现该错误。在调用该函数之前,请验证是否定义了这些对象。通过在异常窗口中启用中断执行,可以轻松跟踪引发此异常的语句: 调试>异常。。。(Ctrl+Alt+E) 并选中公共语言运行时异常“抛出”复选框
至于异常本身——这是非常自我解释的——您正在尝试使用一个未分配给任何东西的引用变量(不指向任何地方)。其中是
this.da_LoadScripts.SelectCommand
first set,然后用ObjCmd
覆盖它?如果第一次创建并设置ObjCmd
时它为null,那么您将通过尝试访问CommandText
属性获得null异常。您应该能够通过调试应用程序来确定错误发生的确切位置。欢迎使用堆栈溢出!几乎所有NullReferenceException
的情况都是相同的。有关提示,请参阅“”。