将对象转换为字符串有错误

本文关键字:字符串 有错误 转换 对象 | 更新日期: 2023-09-27 18:10:36

我的代码是:

SqlConnection scn = new SqlConnection(ClsPublic.GetConnectionString());
                   SqlCommand scm = new SqlCommand("SELECT Name FROM Table WHERE (Blogger = @Blogger)", scn);
                   scm.Parameters.AddWithValue("@Blogger", lblBloger.Text);
                   scn.Open();
                   MyLabel.Text = scm.ExecuteScalar().ToString();
                   scn.Close();

lblLastNo.Text = scm.ExecuteScalar().ToString();

出现以下错误:

对象引用未设置为对象的实例。

或者当我使用if语句时,显示相同的错误

object Blogger= "";
if (Blogger.ToString() != string.Empty)
{
    ....
}

将对象转换为字符串有错误

很可能scm.ExecuteScalar()给您带来一个空值。您需要在使用它之前测试返回的值:

var result = scm.ExecuteScalar();
MyLabel.Text = result == null ? '' : result.ToString();

scm.ExecuteScalar()返回null,或者scm返回null,或者lblLastNo返回null。这是你得到错误的唯一原因'Object reference not set ..'

ExecuteScalar返回一个Object类型。这就是为什么你在scm.ExecuteScalar().ToString();Blogger.ToString()上有相同的行为。

ToString方法的对象类型默认实现返回object类型的完全限定名,如下例所示。

如果该对象为NULL,您将收到错误Object reference not set to an instance of an object.

你的第二个案例:

object blogger= "";
if (blogger.ToString() != string.Empty)
{
    ....
}

不应该抛出异常,而应该返回一个表示对象实例的字符串。例如:"YourNameSpace.Blogger"

请用try catch块括起来,这样你就可以处理运行时异常,这使问题更容易理解。对于if (Blogger.ToString() != string.Empty),这个u可以检查Null条件或它的字符串。然后你可以检查String.IsNullorEmpty

  string str=blogger.toString();
    if (String.IsNullOrEmpty(str)) 
            //do something
   else 
     //do other part

字符串为Null或EMpty