我想创建一个函数来转换任何空值,例如从数据库转换为空字符串.我知道有一些方法,比如if value != null ?? value : String.Empty是否有办法传递null给方法,例如
public string nullToString(string? value)
{
if(value == null) return empty;
return value
}
Run Code Online (Sandbox Code Playgroud)
但我不确定参数语法这样做..
我尝试了上面但它说不是可以为空的类型.
提前致谢.
Gar*_*son 31
static string NullToString( object Value )
{
// Value.ToString() allows for Value being DBNull, but will also convert int, double, etc.
return Value == null ? "" : Value.ToString();
// If this is not what you want then this form may suit you better, handles 'Null' and DBNull otherwise tries a straight cast
// which will throw if Value isn't actually a string object.
//return Value == null || Value == DBNull.Value ? "" : (string)Value;
}
Run Code Online (Sandbox Code Playgroud)
Ica*_*rus 24
当您从数据库获取NULL值时,返回的值是DBNull.Value,在这种情况下,您可以简单地调用.ToString()它将返回""
例:
reader["Column"].ToString()
Run Code Online (Sandbox Code Playgroud)
""如果返回的值是,则获取DBNull.Value
如果场景并不总是数据库,那么我会选择Extension方法:
public static class Extensions
{
public static string EmptyIfNull(this object value)
{
if (value == null)
return "";
return value.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
string someVar = null;
someVar.EmptyIfNull();
Run Code Online (Sandbox Code Playgroud)
liv*_*ove 23
Convert.ToString(object)转换为字符串.如果对象是null,Convert.ToString则将其转换为空字符串.
调用.ToString()具有null值的对象会抛出a System.NullReferenceException.
编辑:
规则的两个例外:
1)ConvertToString(string)在空字符串上将始终返回null.
2)ToString(Nullable<T>)对空值将返回"".
代码示例:
// 1) Objects:
object obj = null;
//string valX1 = obj.ToString(); // throws System.NullReferenceException !!!
string val1 = Convert.ToString(obj);
Console.WriteLine(val1 == ""); // True
Console.WriteLine(val1 == null); // False
// 2) Strings
String str = null;
//string valX2 = str.ToString(); // throws System.NullReferenceException !!!
string val2 = Convert.ToString(str);
Console.WriteLine(val2 == ""); // False
Console.WriteLine(val2 == null); // True
// 3) Nullable types:
long? num = null;
string val3 = num.ToString(); // ok, no error
Console.WriteLine(num == null); // True
Console.WriteLine(val3 == ""); // True
Console.WriteLine(val3 == null); // False
val3 = Convert.ToString(num);
Console.WriteLine(num == null); // True
Console.WriteLine(val3 == ""); // True
Console.WriteLine(val3 == null); // False
Run Code Online (Sandbox Code Playgroud)
cad*_*ll0 13
您可以使用null coalesce运算符.
string result = value ?? "";
Run Code Online (Sandbox Code Playgroud)
使用 C# 6 可以使这个更短:
public string NullToString(string value)
{
return value?.ToString() ?? string.empty;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91342 次 |
| 最近记录: |