C#中未将对象引用设置为对象的实例如何检查空值?

问题描述 投票:0回答:4

在这一行运行 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;
            }

但即使如此,它也会给出相同的对象引用异常,请帮助我解决它。 谢谢

c#
4个回答
9
投票

试试这个

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();
}

2
投票

空引用异常是因为

info
info.details
为空。 在执行
Split
之前,您需要检查是否有空值。


0
投票

在尝试字符串拆分之前,您需要检查是否为 null

if (info == null)
{
    // do not attempt to split details, maybe throw something here
}

但是,您可能想看看如何调用

SaveData(studentinfo info)
,以及在什么情况下会传递一个 null
studentinfo
对象。


0
投票

使用 C# 最新版本

if(数据不为空) {

}

请注意 “== null”和“!= null”对于空引用不起作用

© www.soinside.com 2019 - 2024. All rights reserved.