簡體   English   中英

C#可為空 <DateTime> 串

[英]C# Nullable<DateTime> to string

我有一個DateTime? 變量,有時值為null ,我怎么能返回一個空字符串"" ,如果值是nullDateTime值時,沒有null

盡管許多答案都是正確的,但所有答案都不必要地復雜。 如果該值在邏輯上為空,則在可為空的DateTime上調用ToString的結果已經是一個空字符串。 只需按您的值調用ToString即可; 它會完全按照您的要求進行。

string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;

實際上,這是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>

nullNullable<T>上調用.ToString()將返回一個空字符串。

你可以寫一個擴展方法

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

...
var str = myVariable.ToStringSafe();

您只需要簡單地調用.ToString() 它為null值處理Nullable<T>對象。

這是.NET FrameworkNullable<T>.ToString()

public override string ToString() {
    return hasValue ? value.ToString() : "";
}
DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;
DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
    return MyNullableDT.Value.ToString();
}
return "";
if (aDate.HasValue)
    return aDate;
else
    return string.Empty;
DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;

根據Microsoft的文檔

如果HasValue屬性為true,則為當前Nullable對象的值的文本表示形式;如果HasValue屬性為false,則為空字符串(“”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM