有沒有什麼辦法可以比較下面的if語句中的時間和空值是否有效?請詳細解釋我。關於c的常見問題#
static DateTime time;
if (time == null)
{
/* do something */
}
有沒有什麼辦法可以比較下面的if語句中的時間和空值是否有效?請詳細解釋我。關於c的常見問題#
static DateTime time;
if (time == null)
{
/* do something */
}
DateTime是一個struct
,這意味着它是一個值類型,而不是引用類型。 null
是一個只適用於參考的概念。值類型在邏輯上不可能是null
。
Java通過創建包裝類型(比較int
及其對應類Integer
)來解決此問題。但是,C#採用不同的方法,使用nullables的概念。
創建一個空值很簡單,只需在原始類型中添加一個?
即可。
static DateTime? time;
這可能會導致比較if (time == null)
,要成爲true
。
由於DateTime的是,你不能分配空給它的值類型,但正好爲空的介紹這些情況下(沒有值) - 改用可爲空的日期時間:從這裏
參考:Set an empty DateTime variable
DateTime? myTime = null;
在C#
DateTime? time = null;
if (time == null)
{
/* do something */
}
修改後的代碼將工作在C#
你能解釋一下你在這裏做了什麼嗎?確保有人閱讀這篇文章,看看你做了什麼 - 這個問號是做什麼的?爲什麼在編譯版本時沒有編譯?什麼是功能差異? –
既然你還沒有賦值的變量時,你不能把它進行比較。另外,由於Datetime不是可以爲空的對象,因此不能將其指定爲null。
它被標記爲'static',因此它可能出現在類定義中,在這種情況下,即使它沒有明確定義,您也可以在比較中使用它。 –
static DateTime time; if (time == DateTime.MinValue){/* do something */}
static Nullable<DateTime> time;// same as static DateTime? time; if (time.HasValue) { /* do something */ }
你可以[試試](https://dotnetfiddle.net/)相當容易,看看會發生什麼... –
你也標記這個'c'的任何理由? (之前編輯過的'java') –
我在問一個問題。沒有給出任何答案。如果你沒有答案,請不要做無關緊要的評論。 –