C # Nullable <DateTime>в строку - PullRequest
       45

C # Nullable <DateTime>в строку

32 голосов
/ 18 сентября 2009

У меня есть переменная DateTime?, иногда значение равно null, как я могу вернуть пустую строку "", если значение равно null, или значение DateTime, если не null? * 1007? *

Ответы [ 11 ]

97 голосов
/ 18 сентября 2009

Хотя многие из этих ответов верны, все они излишне сложны. Результатом вызова ToString для обнуляемого DateTime уже является пустая строка, если значение логически равно нулю. Просто вызовите ToString для своего значения; он будет делать именно то, что вы хотите.

37 голосов
/ 18 сентября 2009
string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;
17 голосов
/ 18 сентября 2009

На самом деле это поведение по умолчанию для типов Nullable, что без значения они ничего не возвращают:

public class Test {
    public static void Main() {
        System.DateTime? dt = null;
        System.Console.WriteLine("<{0}>", dt.ToString());
        dt = System.DateTime.Now;
        System.Console.WriteLine("<{0}>", dt.ToString());
    }
}

это дает

<>
<2009-09-18 19:16:09>
7 голосов
/ 18 сентября 2009

Вы можете написать метод расширения

public static string ToStringSafe(this DateTime? t) {
  return t.HasValue ? t.Value.ToString() : String.Empty;
}

...
var str = myVariable.ToStringSafe();
6 голосов
/ 19 сентября 2009

Вызов .ToString() для Nullable<T>, то есть null, вернет пустую строку.

2 голосов
/ 30 июля 2017

Все, что вам нужно сделать, это просто позвонить .ToString(). Он обрабатывает Nullable<T> объект для null значения.

Вот источник .NET Framework для Nullable<T>.ToString():

public override string ToString() {
    return hasValue ? value.ToString() : "";
}
2 голосов
/ 18 сентября 2009
DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;
1 голос
/ 18 сентября 2009
DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;
1 голос
/ 18 сентября 2009
if (aDate.HasValue)
    return aDate;
else
    return string.Empty;
1 голос
/ 18 сентября 2009
DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
    return MyNullableDT.Value.ToString();
}
return "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...