[英]c# object defining property nullable or not
我有一個包含事件日期的對象。 在數據庫中,我有一個名為ObjectEventDateUTC之類的字段,用於存儲事件發生的UTC時間。
現在,我正在定義c#objet類,如下所示:
public class MyObject
{
public DateTime EventDateUTC { get; set; }
public DateTime EventDateUserTime { get; set; }
}
在針對數據庫運行的linq-to-sql查詢中設置屬性EventDateUTC
,然后在封裝的方法中設置EventDateUserTime
字段,該方法接收用戶的時區作為參數。
我的問題是:在查詢填充對象的時間與方法設置屬性的時間之間, EventDateUserTime
字段會發生什么情況。 我應該保持對象定義不變還是將EventDateUserTime
更改為Nullable。
謝謝。
新對象中的字段將被擦除,即內存設置為全零。 然后運行字段初始化程序(如果有的話),然后運行構造函數(CLI進行第一步;編譯器將最后兩個操作組合在一起以.ctor()
)。
從而; 它們以“全零”開始,即DateTime.MinValue
(0001年1月1日)。 如果您滿意地將其視為隱式null(如1.0中所必需),則可以。 如果您想要更明確的內容,那么DateTime?
也可以
在查詢填充對象的時間與方法設置屬性的時間之間,EventDateUserTime字段會發生什么情況
它被初始化為其默認值( DateTime.MinValue
)。 您無需將其設置為可為空的類型。
我應該保持對象定義不變還是將EventDateUserTime更改為Nullable。
最終,這取決於您的設計:如果未設置EventDateUserTime
的對象的狀態是合法的,則使該字段可為空; 如果您始終在從LINQ檢索后立即將其設置為正確,請使其不可為空。
也許更好的方法是將EventDateUserTime
設為計算所得的屬性,並存儲用戶時區:
public class MyObject {
public TimeZone UserTimeZone { get; set; }
public DateTime EventDateUTC { get; set; }
public DateTime EventDateUserTime {
get {
// Calculate time based on EventDateUTC and UserTimeZone
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.