将null转换为字符串的函数

时间:2012-09-06 13:02:15

标签: c# asp.net

我想创建一个转换任何空值的函数,例如从数据库到空字符串。 我知道有一些方法,例如if value != null ?? value : String.Empty但是有办法将null传递给方法,例如。

public string nullToString(string? value)
{
    if(value == null) return empty;
    return value
}

但我不确定参数语法是否可以这样做..

我尝试了上述内容,但它说不是可以为空的类型。

提前致谢。

16 个答案:

答案 0 :(得分:27)

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;


}

答案 1 :(得分:24)

当您从数据库获取NULL值时,返回的值为DBNull.Value,在这种情况下,您只需调用.ToString()即可返回""

示例:

 reader["Column"].ToString() 

如果返回的值为""

,则为DBNull.Value

如果场景并不总是数据库,那么我会选择扩展方法:

public static class Extensions
{

    public static string EmptyIfNull(this object value)
    {
        if (value == null)
            return "";
        return value.ToString();
    }
}

用法:

string someVar = null; 
someVar.EmptyIfNull();

答案 2 :(得分:20)

Convert.ToString(object)转换为字符串。如果对象为null,则Convert.ToString会将其转换为空字符串。

在具有空值的对象上调用.ToString()会抛出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

答案 3 :(得分:12)

您可以使用null coalesce运算符。

string result = value ?? "";

答案 4 :(得分:4)

使用C#6可以缩短它的时间:

public string NullToString(string Value)
{
    return value?.ToString() ?? "";
}

答案 5 :(得分:1)

您可以使用Convert.ToString((object)value)。您需要先将值转换为对象,否则转换将导致null。

using System;

public class Program
{
    public static void Main()
    {
        string format = "    Convert.ToString({0,-20}) == null? {1,-5},  == empty? {2,-5}";
        object nullObject = null;
        string nullString = null;

        string convertedString = Convert.ToString(nullObject);
        Console.WriteLine(format, "nullObject", convertedString == null, convertedString == "");

        convertedString = Convert.ToString(nullString);
        Console.WriteLine(format, "nullString", convertedString == null, convertedString == "");

        convertedString = Convert.ToString((object)nullString);
        Console.WriteLine(format, "(object)nullString", convertedString == null, convertedString == "");

    }
}

给出:

Convert.ToString(nullObject          ) == null? False,  == empty? True 
Convert.ToString(nullString          ) == null? True ,  == empty? False
Convert.ToString((object)nullString  ) == null? False,  == empty? True

如果将System.DBNull.Value传递给Convert.ToString(),它也将转换为空字符串。

答案 6 :(得分:1)

可以使用“?”。 (null条件成员访问)与“??” (null-coalescing operator)像这样:

public string EmptyIfNull(object value)
{
    return value?.ToString() ?? string.Empty;
}

此方法也可以写为对象的扩展方法:

public static class ObjectExtensions
{
    public static string EmptyIfNull(this object value)
    {
        return value?.ToString() ?? string.Empty;
    }
}

你可以使用“=&gt;”编写相同的方法(lambda运算符):

public string EmptyIfNull(object value)
    => value?.ToString() ?? string.Empty;

答案 7 :(得分:0)

public string nullToString(string value)
{
    return value == null ?string.Empty: value;   
}

答案 8 :(得分:0)

 public string ToString(this string value)
        {
            if (value == null)
            {
                value = string.Empty;
            }               
            else
            {
                return value.Trim();
            }
        }

答案 9 :(得分:0)

这是一个古老的话题,但是有一个优雅的&#34;这样做的方式......

static string NullToString( object Value )
{       
    return Value = Value ?? string.Empty;    
}

答案 10 :(得分:0)

您可以尝试

public string ToString(this object value)
{
    // this will throw an exception if value is null
    string val = Convert.ToString (value);

     // it can be a space
     If (string.IsNullOrEmpty(val.Trim()) 
         return string.Empty:
}
    // to avoid not all code paths return a value
    return val;
}

答案 11 :(得分:0)

您可以使用??“” 例如:

y=x??""

如果x不为空y = x但如果x为空y =“”

答案 12 :(得分:0)

1。 string.Format

您可以使用string.Format将空值转换为空字符串

string nullstr = null;
string  quotestring = string.Format("{0}", nullstr);
Console.WriteLine(quotestring);//Output- ""

2。字符串插值

或者您可以使用string interpolation.此功能在C#6和更高版本中可用。

InterpolatedExpression产生要格式化的结果。空结果的字符串表示形式为String.Empty

 string nullstr = null;
 string  quotestring = $"{nullstr}";
 Console.WriteLine(quotestring);//Output- ""

答案 13 :(得分:0)

有时我只是将一个空字符串附加到可能为null的对象上。

object x = null;
string y = (x + "").ToString();

这将永远不会引发异常,并且如果为null则始终返回一个空字符串,并且如果那么逻辑则不需要。

答案 14 :(得分:0)

您可以使用 null-coalescing-operator C# 8.0 及更高版本

值 ??=string.Empty;

??= operators

答案 15 :(得分:-3)

根据以下MSDN page,您需要使用Convert.ToString方法

string x = Convert.ToString((object)value)