Если у меня есть метод:Как компилятор понимает Nullables?
protected int CalculateActualDuration(DateTime? startDate, DateTime? endDate) {
if (startDate.HasValue && endDate.HasValue) {
return Math.Abs((int)(endDate.Value.Subtract(startDate.Value).TotalMinutes));
}
else {
return 0;
}
}
Я могу вызвать метод, передавая в обоих DateTime? и DateTime. Итак, как компилятор понимает разницу?
Означает ли это, если я прохожу в DateTime Значение, если заявление будет по существу soemthing как
if (true && true)
и все * .value было изменено на соответствующих объектах? Итак, все endDate.Value теперь являются EndDates?
Включает ли компилятор все параметры, которые не являются Nullables в Nullables во время выполнения?
Ответ на ваш последний вопрос: «Да». Подумайте о nullable DateTime как нормальном DateTime с приклеенным к нему Boolean, который указывает на его недействительность. Теперь ясно, как компилятор мог иметь дело с преобразованием нормального DateTime в нулевую DateTime? –