Подтвердить что ты не робот

Функция преобразования значения null в строку

Я хочу создать функцию для преобразования любого нулевого значения, например. от базы данных до пустой строки. Я знаю, что существуют такие методы, как value != null ?? value : String.Empty, но есть способ передать null методу, например.

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

Но я не уверен в синтаксисе параметров для этого.

Я попробовал выше, но он говорит не тип с нулевым значением.

Спасибо заранее.

4b9b3361

Ответ 1

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;


}

Ответ 2

Когда вы получаете значение 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();

Ответ 3

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

Ответ 4

Вы можете просто использовать оператор null coalesce.

string result = value ?? "";

Ответ 5

Возможно сделать это еще короче с С# 6:

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

Ответ 6

Вы можете использовать Convert.ToString((object)value). Сначала нужно передать свое значение объекту, иначе преобразование приведет к нулевому значению.

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(), он также будет преобразован в пустую строку.

Ответ 7

Можно использовать "?". (нулевой доступ к условному члену) с "??" (оператор нуль-коалесцирования) следующим образом:

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;
    }
}

И вы можете написать те же методы, используя "= > " (лямбда-оператор):

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

Ответ 8

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

Ответ 9

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

Ответ 10

Его старая тема, но есть "элегантный" способ сделать это...

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

Ответ 11

Вы можете попробовать это

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;
}

Ответ 12

Вы можете использовать?? "" например:

y=x??""

если x не нуль, y = x, но если x нуль, y = ""

Ответ 13

1. строка. Формат

Вы можете использовать string.Format которая преобразует string.Format в пустую строку

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

2.строчная интерполяция

или вы можете использовать string interpolation. эта функция доступна в С# 6 и более поздних версиях.

InterpolatedExpression создает результат для форматирования. Строковое представление нулевого результата - String.Empty.

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