string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);
,這將引發一個編譯時錯誤。我知道我可以做tryparse or do if {}
。有沒有辦法在一行中做到這一點?
string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);
,這將引發一個編譯時錯誤。我知道我可以做tryparse or do if {}
。有沒有辦法在一行中做到這一點?
嘗試使用conditional operator?:
代替null-coalescing operator??
:
DateTime? dt = date == null ? (DateTime?)null : DateTime.Parse(date);
您還需要空轉換爲DateTime?
否則你將得到一個編譯錯誤。
string date = "12/2/2011";
date = Convert.ToDateTime(date);
string date = "12/2/2011";
DateTime? dt = String.IsNullOrEmpty(date) ? (DateTime?)null : DateTime.Parse(date);
該溶液不僅分配null
到可空的DateTime dt
當字符串date
是null
或空字符串,而且當它包含一個無效的日期表示:
string date = null; // or "01/02/2011"
DateTime? dt;
DateTime temp;
if (DateTime.TryParse(date, out temp)) {
dt = temp;
} else {
dt = null;
}
的if-else語句可以用一行三元表達式替換,但不是temp
的聲明:
DateTime temp;
dt = DateTime.TryParse(date, out temp) ? temp : (DateTime?)null;
Downvoter請評論。我的解決方案有什麼問題?它不僅會檢測日期爲空時,還會在不包含有效日期字符串時檢測到。還要注意,dt是可空的。 –
我只是看不到你的'else'語句,因爲dt從一開始就是空的。 – everton
@EvertonAgner:只有'dt'是一個成員變量,但不是如果它是一個局部變量。從問題中給出的例子,我沒有看到,dt是在類中還是在方法中定義的。 –
那裏有一個額外的問號。它應該是'DateTime? dt =日期? DateTime.Parse(date):null;' – dasblinkenlight
對不起,剛纔編輯過這個問題? DateTime.Parse(日期)從日期? null:DateTime.Parse(date) –
不,C#支持?? (在Groovy中稱爲elvis操作符)。它只在值爲空時返回右側值,否則返回值本身。 – everton