An explanation of implicit and explicit conversion in C#

Given a method signature that expects two nullable DateTime parameters… protected int CalculateActualDuration(DateTime? startDate, DateTime? endDate) … SamIAm asked on Stack Overflow about how the compiler understands nullable types: I am able to call the method by passing in both a DateTime? and a DateTime. So how does the compiler understand the difference? My interpretation was that the OP was assuming some hidden logic, obfuscated by the compiler, was responsible for allowing both a type and a nullable type. While everything does eventually have to make its way down to the compiler (so yes, it is ultimately handling both types »