我有一个DateTime?
变量,有时值为null
,当值为""
或{{1}时,如何返回空字符串null
不是DateTime
时的值?
答案 0 :(得分:97)
虽然其中许多答案都是正确的,但所有答案都是不必要的复杂。 如果值在逻辑上为null,则在可以为空的DateTime上调用ToString的结果已经是空字符串。只需在值上调用ToString;它会完全按照你的意愿行事。
答案 1 :(得分:36)
string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;
答案 2 :(得分:17)
实际上,这是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>
答案 3 :(得分:7)
您可以编写扩展方法
public static string ToStringSafe(this DateTime? t) {
return t.HasValue ? t.Value.ToString() : String.Empty;
}
...
var str = myVariable.ToStringSafe();
答案 4 :(得分:5)
在.ToString()
Nullable<T>
上拨打null
将返回一个空字符串。
答案 5 :(得分:2)
DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;
答案 6 :(得分:2)
您只需拨打.ToString()
即可。它处理Nullable<T>
值的null
对象。
以下是Nullable<T>.ToString()
的{{3}}:
public override string ToString() {
return hasValue ? value.ToString() : "";
}
答案 7 :(得分:1)
DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
return MyNullableDT.Value.ToString();
}
return "";
答案 8 :(得分:1)
if (aDate.HasValue)
return aDate;
else
return string.Empty;
答案 9 :(得分:1)
DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;
答案 10 :(得分:0)
如果HasValue属性为true,则为当前Nullable对象的值的文本表示形式;如果HasValue属性为false,则为空字符串(“”)。