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