这听起来微不足道,但我面临挑战。我无法将可为空值转换为不可为空值:
if (caseObj.SyncDate != null)
caseDTO.SyncDate = DateTimeHelper.getFormattedDateTime(caseObj.SyncDate);
Run Code Online (Sandbox Code Playgroud)
我的 caseObj.SyncDate 定义为:
public DateTimeOffset? SyncDate {get;set;}
Run Code Online (Sandbox Code Playgroud)
我的 getFormattedDateTime 是:
public static string getFormattedDateTime(DateTimeOffset dateTimeOffset) {
string returnDate = null;
if (dateTimeOffset != null) {
returnDate = dateTimeOffset.ToString("yyyy-MM-dd HH:mm:ss.fffzzz", CultureInfo.InvariantCulture);
}
return returnDate;
}
Run Code Online (Sandbox Code Playgroud)
我读过这篇文章并尝试过:
if (caseObj.SyncDate != null)
caseDTO.SyncDate = DateTimeHelper.getFormattedDateTime(caseObj.SyncDate!):
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,因为我看到了Microsoft 文档的链接,其中指出:
有时,当您知道变量不为 null,但编译器确定其 null 状态为 Maybe-null 时,您必须覆盖警告。您使用了 null-forgiving 运算符!跟随变量名称以强制空状态为非空。例如,如果您知道 name 变量不为 null,但编译器发出警告,则可以编写以下代码来覆盖编译器的分析:
但这似乎不起作用。我已经阅读了这篇文章(我认为这篇文章足够集中),而这篇文章的标记解决方案不是从可为空转换为空。
我也尝试过这个:
if (caseObj.SyncDate != null) {
DateTimeOffset dto = (DateTimeOffset) caseObj.SyncDate;
caseDTO.SyncDate = DateTimeHelper.getFormattedDateTime(dto);
}
Run Code Online (Sandbox Code Playgroud)
但得到这个:
参数 1:无法从“System.DateTimeOffset”转换?到“系统.日期时间”
这很奇怪,因为我没有尝试从 System.DateTimeOffset 进行转换?到系统日期时间。我正在尝试转换 System.DateTimeOffset?到日期时间偏移。
我在 Mac 上运行 dotnet core(版本 6.0.201)。似乎有一些冗长复杂的答案,但我认为有一种简单的方法可以做到这一点,但我缺少。
小智 5
如果我没猜错的话 - 你可能想要这样的东西:
if (caseObj.SyncDate.HasValue)
caseDTO.SyncDate = DateTimeHelper.getFormattedDateTime(caseObj.SyncDate.Value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6736 次 |
| 最近记录: |