我完全了解 nullabe 背景關系以及如何在 c# 中處理它,即使有了這個我已經查看了這個microsoft 官方教程以及stackoverflow 上的這個問題,但是有一件事情我真的不知道為什么!!??
在可空背景關系啟用代碼中,以下代碼運行良好且沒有問題:
List<DateStepStatus> OperationOnTimeLine_success (List<DateStepStatus> timeLine)
{
for (int i = 0; i < timeLine.Count; i )
{
DateTime dateTime = timeLine[i].dateTime;
if (DateTime.Today >= dateTime)
{
var abc = timeLine[i].stepStatus;
if (abc is not null)
{
abc.Status = Status.Succeed;
}
}
else continue;
}
return timeLine;
}
但是這段代碼有一個警告:
List<DateStepStatus> OperationOnTimeLine_success (List<DateStepStatus> timeLine)
{
for (int i = 0; i < timeLine.Count; i )
{
DateTime dateTime = timeLine[i].dateTime;
if (DateTime.Today >= dateTime)
{
if (timeLine[i].stepStatus is not null)
{
timeLine[i].stepStatus.Status = Status.Succeed;// bad-green warning goes under "timeLine[i].stepStatus" part
}
}
else continue;
}
return timeLine;
}
這真的很煩人!如果我只使用 var(如 abc),警告就會消失,但如果我想直接做同樣的事情,警告又會回來!
uj5u.com熱心網友回復:
C# 語言不保證stepStatus多次呼叫 getter 時該屬性回傳相同的值。因此,對它進行一次空檢查并不能證明它第二次不會為空。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/495626.html
