C# 如何处理空值?

C# 如何处理空值?,c#,null,C#,Null,您好,我在尝试使用“”处理空值时收到以下错误消息??联合算子,知道为什么吗 无法将类型为System.DBNull的对象强制转换为类型System.String using(SqlDataReader rMemo = cmdUMemo.ExecuteReader()) { while (rMemo.Read()) { String Title = (String)rMemo["UpdateTitle"]

您好,我在尝试使用“”处理空值时收到以下错误消息??联合算子,知道为什么吗

无法将类型为
System.DBNull
的对象强制转换为类型
System.String

using(SqlDataReader rMemo = cmdUMemo.ExecuteReader())
{
      while (rMemo.Read())
      {                        
           String Title = (String)rMemo["UpdateTitle"] ?? "";
           lblUTitle.Text = Title;
      }
}

使用
作为
关键字:

String Title = rMemo["UpdateTitle"] as String ?? "";
无法将
DBNull
类型显式转换为字符串,但是
as
关键字将尝试进行转换,如果转换失败,则返回
null
。然后,使用
??
操作符将
null
合并到
“”

比较它并返回空字符串,如:

 String Title = rMemo["UpdateTitle"] == DBNull.Value ? "" :
                                           rMemo["UpdateTitle"].ToString();
另一种方法是使用
Convert.ToString
它将返回
DBNull.Value的空字符串

String Title = Convert.ToString(rMemo["UpdateTitle"]);
请记住
DBNull.Value.ToString()
表示空字符串。因此,您可以检查返回的行是否有列
UpdateTitle
,然后调用
Convert.ToString
如下:

string Title = rMemo["UpdateTitle"] != null ? Convert.ToString(rMemo["UpdateTitle"]) 
                                              : "";

null
值应用
Convert.ToString
将返回
null
而不是空字符串

处理这个问题的一个简单方法是编写一个扩展方法,然后可以在所有地方使用它:

public static class ObjectExtensions
{
    public String ToStringOrEmpty(this object obj)
    {
        if(obj == null)
           return String.Empty;

        return obj.ToString();
    } 
}
然后,您可以这样简单地调用它,使您的代码美观易读:

String Title = rMemo["UpdateTitle"].ToStringOrEmpty()