将null转换为字符串的函数

Jam*_*ith 22 c# asp.net

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

  • 如果传递给它的值是空字符串而不是空对象,则返回null. (6认同)
  • @Stephen:这是有道理的,因为我们不使用Convert.ToString(object)将空字符串转换为空字符串.此函数的目的是将任何对象转换为字符串; 因此,如果对象为null(无论对象是否为字符串),它将返回一个空字符串. (3认同)

cad*_*ll0 13

您可以使用null coalesce运算符.

string result = value ?? "";
Run Code Online (Sandbox Code Playgroud)

  • 我们都不正确:在这个例子中,使用了不可能的类型`string?`. (4认同)

Tro*_*ner 7

使用 C# 6 可以使这个更短:

public string NullToString(string value)
{
    return value?.ToString() ?? string.empty;
}
Run Code Online (Sandbox Code Playgroud)