簡體   English   中英

可以為空的日期時間值

[英]Nullable datetime value

DateTime值可以為NULL嗎?

我有這個代碼:

從這里我繼承了我的變量

namespace Transakcija
{
     public class Line
     {
        public System.DateTime DateOfProduction { get; set; }
     }
}

然后為每個循環:

foreach (var rw_det in dt_stavke.Rows)
{
    var list = new List<Transakcija.Line>();
    var l = new Transakcija.Line();

     //DateOfProduction
    if (rw_det["DPRO02"].ToString().Length <= 0)
    {
        l.DateOfProduction = default(DateTime);
    }
    else
    {
        l.DateOfProduction = new DateTime();
        prod_date = rw_det["DPRO02"].ToString();
        DateTime pro_date = DateTime.ParseExact(prod_date, "dd.MM.yyyy", CultureInfo.InvariantCulture);
        string p_date = pro_date.ToString("yyyy-MM-dd");
        l.DateOfProduction = DateTime.Parse(p_date);
    }
}

所以l.DateOfProduction的值必須為null。 我試過這個:

DateTime? dt = null;
l.DateOfProduction = (DateTime)dt;

但我得到錯誤: nullable object must have a value

這是可能的,還是我必須將最小datetime值傳遞給變量?

DateTime是一個值類型,因此不能永遠不為null 如果您需要“無值”值,請使用Nullable<DateTime>或簡短的DateTime?

您可以使用構造函數來設置可為空的DateTime

DateTime? dt = new Nullable<DateTime>(); 

您可以使用HasValue屬性檢查可空類型是否為null

if(dt.HasValue)
{
    // now you can safely use dt.Value as DateTime, 
    // otherwise accessing the Value property raises an InvalidOperationException
    DateTime otherDate = dt.Value;
}

yoe可以通過這種方式擁有Dateime Nullable

DateTime? dtNullable = new Nullable<DateTime>(); 

if(dtNullable.HasValue)
 l.DateOfProduction = dtNullable.Value;

PS:例如,如果您將不可為空的DateTime傳遞給Nullable DateTime,那么它將需要強制轉換

像這樣

DateTime? nullableDateTime = (DateTime?)nonNullableDateTime;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM