זהירות עם הפעלת += על int? או חיבור שני int?
מה דעתכם על הקוד הבא :
int? i = null;
i += 10;
Console.WriteLine(i);
אני הייתי בטוח שזה ידפיס 10, אבל מסתבר שהערך של i נשאר ב - null, וזה גם מתואר ב -
MSDN
int? d = null;
int? r = 10;
r = r + d;
Console.WriteLine(r);
r חוזר להיות null.
ההתנהגות הזאת היא פתח לבאגים, באופן אישי עד שלא נתקלתי בהתנהגות הזאת, הייתי בודק האם HasValue רק כשרציתי להוציא ערך אבל מהיום אני יודע שאני צריך לכתוב ככה:
if (i.HasValue)
{
i += 10;
}
else
{
i = 10;
}
או :
i = i.GetValueOrDefault() + 10;
או :