如何將 nullable 轉換DateTime為 nullable DateOnly?所以DateTime?要DateOnly?
錯誤說:
錯誤 CS0029 無法隱式轉換型別“System.DateOnly?” 到“System.DateTime?”
我可以通過以下方式轉換DateTime為DateOnly:
DateOnly mydate = DateOnly.FromDateTime(mydatetime);
但是空值呢?
我有辦法,但我認為這不是最好的主意...
uj5u.com熱心網友回復:
讓我們創建一個與 完全相同的方法FromDateTime,只是作為對 的擴展呼叫DateTime:
public static DateOnly ToDateOnly(this DateTime datetime)
=> DateOnly.FromDateTime(datetime);
現在,您可以使用 null 條件成員訪問運算子?.將此方法提升為其可為 null 的版本:
var myNullableDateOnly = myNullableDateTime?.ToDateOnly();
不幸的是,C# 沒有“空條件靜態方法呼叫運算子”。因此,我們需要這種“擴展方法解決方法”。
uj5u.com熱心網友回復:
您可以創建 DateTime 擴展方法:
public static class DateTimeExtends
{
public static DateOnly ToDateOnly(this DateTime date)
{
return new DateOnly(date.Year, date.Month, date.Day);
}
public static DateOnly? ToDateOnly(this DateTime? date)
{
return date != null ? (DateOnly?)date.Value.ToDateOnly() : null;
}
}
并在任何 DateTime 實體上使用:
DateOnly date = DateTime.Now.ToDateOnly();
注意:未經測驗,可能有提示錯誤...
uj5u.com熱心網友回復:
public static DateOnly? ToNullableDateOnly(this DateTime? input)
{
if (input == null) return null;
return DateOnly.FromDateTime(input.Value);
}
uj5u.com熱心網友回復:
我只是創建這種方法,如果有人有另一個更好的方法,我很樂意接受它作為答案
public DateOnly? NullableDateTime_To_NullableDateOnly(DateTime? input) {
if (input != null)
{
return DateOnly.FromDateTime(input ?? DateTime.Now); //this is irrelevant but...
}
return null;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472627.html
