Wenn ich eine Methode haben:Wie versteht der Compiler 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;
}
}
ich in der Lage bin sowohl ein Datetime die Methode aufzurufen, indem nebenbei? und eine DateTime. Wie also versteht der Compiler den Unterschied?
Heißt das, wenn ich in einem Datetime-Wert übergeben, die if-Anweisung soemthing wird im Wesentlichen wie
if (true && true)
und alle * .value hat auf die richtigen Objekte verändert? Also sind alle endDate.Value alle jetzt EndDates?
Konvertiert der Compiler alle Parameter, die nicht Nullable sind, zur Laufzeit in Nullable?
Die Antwort auf Ihre letzte Frage ist "Ja". Stellen Sie sich ein Nullable DateTime als normales DateTime mit einem Boolean vor, das darauf hinweist, dass es null ist. Jetzt ist es klar, wie der Compiler mit der Umwandlung einer normalen DateTime in eine Nullable DateTime umgehen konnte? –