3 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
這個(gè)問(wèn)題已經(jīng)被問(wèn)過(guò)很多次了。編譯器告訴你它不知道如何轉(zhuǎn)換null為DateTime。
解決方案很簡(jiǎn)單:
DateTime? foo;
foo = true ? (DateTime?)null : new DateTime(0);
請(qǐng)注意,Nullable<DateTime>可以寫(xiě)入DateTime?,這將節(jié)省您一堆打字。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
FYI(Offtopic,但很漂亮并且與可空類(lèi)型有關(guān))我們有一個(gè)方便的運(yùn)算符,僅用于可空類(lèi)型,稱(chēng)為空合并運(yùn)算符
??
像這樣使用:
// Left hand is the nullable type, righthand is default if the type is null.
Nullable<DateTime> foo;
DateTime value = foo ?? new DateTime(0);

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
類(lèi)似于接受的另一個(gè)解決方案是使用C#的default關(guān)鍵字。雖然使用泛型定義,但它實(shí)際上適用于任何類(lèi)型。
應(yīng)用于OP問(wèn)題的示例用法:
Nullable<DateTime> foo;
foo = true ? default(DateTime) : new DateTime(0);
使用當(dāng)前接受的答案的示例用法:
DateTime? foo;
foo = true ? default(DateTime) : new DateTime(0);
此外,通過(guò)使用default,您不需要指定變量nullable,以便為其賦值null。編譯器將自動(dòng)分配特定變量類(lèi)型的默認(rèn)值,不會(huì)遇到任何錯(cuò)誤。例:
DateTime foo;
foo = true ? default(DateTime) : new DateTime(0);
- 3 回答
- 0 關(guān)注
- 333 瀏覽
添加回答
舉報(bào)