我想创建一个函数来转换任何空值,例如从数据库转换为空字符串.我知道有一些方法,比如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 次  |  
        
|   最近记录:  |