在这一行运行 C# 代码后出现空引用异常
var data = info.details.Split('|');
c#代码:
public studentinfo SaveData(studentinfo info)
{
bool returnBool=false;
SqlConnection con;
var data = info.details.Split('|');
var response = new studentinfo
{
ID = data[0],
Name = data[1],
Project = data[2],
Result = data[3]
};
con = new SqlConnection(ConfigurationManager.ConnectionStrings["Myproject.Properties.Settings.MyConnection"].ConnectionString);
string sqlStr = "INSERT INTO Result (ID,Name,Project,Result) values('" + data[0] + "', '" + data[1] + "', '" + data[2] + "', '" + data[3] + "')";
SqlCommand dbCommand = new SqlCommand(sqlStr, con);
try
{
con.Open();
if (dbCommand.ExecuteNonQuery() != 0)
{
returnBool = true;
}
if (!data.Equals(null))
{
returnBool = true;
}
con.Close();
}
catch
{
returnBool= false;
}
con.Close();
return response;
}
我尝试实施:
if (!data.Equals(null))
{
returnBool = true;
}
但即使如此,它也会给出相同的对象引用异常,请帮助我解决它。 谢谢
试试这个
if(data != null)
{
}
或者
if(object.ReferenceEquals(data,null))
{
}
可能正如@zigdawgydawg指出的那样,检查
data
时不会出现异常,因为string.Split
永远不会返回null
。所以,你需要避免空参数。
if(info==null || info.details == null)
{
return null;//Or throw new ArgumentException();
}
空引用异常是因为
info
或 info.details
为空。 在执行 Split
之前,您需要检查是否有空值。
在尝试字符串拆分之前,您需要检查是否为 null
if (info == null)
{
// do not attempt to split details, maybe throw something here
}
但是,您可能想看看如何调用
SaveData(studentinfo info)
,以及在什么情况下会传递一个 null studentinfo
对象。
使用 C# 最新版本
if(数据不为空) {
}
请注意 “== null”和“!= null”对于空引用不起作用