0

この行で C# コードを実行した後、nullreference 例外が発生します

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

それでも同じオブジェクト参照例外が発生します。解決するのを手伝ってください。ありがとう

4

3 に答える 3

6

これを試して

if(data != null)
{

}

または

if(object.ReferenceEquals(data,null))
{

}

おそらく@zigdawgydawgが指摘したように、決して返されないdataため、例外はチェックされません。したがって、null パラメータを避ける必要があります。string.Splitnull

if(info==null || info.details == null)
{
    return null;//Or throw new ArgumentException();
}
于 2013-08-28T19:44:35.663 に答える
2

Null 参照例外は、infoorinfo.detailsが null であるためです。を実行する前に、null をチェックする必要がありますSplit

于 2013-08-28T19:45:30.337 に答える
0

文字列分割を試みる前に null をチェックする必要があります

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

ただし、それがどのように呼び出されているか、どのような状況で nullオブジェクトSaveData(studentinfo info)が渡されるかを確認したい場合があります。studentinfo

于 2013-08-28T19:53:29.667 に答える