What does "DateTime?" mean in C#?
.net, c#, datetime, nullable, syntax
Solution
Since `DateTime` is a `struct`, not a `class`, you get a `DateTime` object, not a reference, when you declare a field or variable of that type.
And, in the same way as an `int` cannot be `null`, so this `DateTime` object can never be `null`, because it's not a reference.
Adding the question mark turns it into a nullable type, which means that either it is a `DateTime` object, or it is `null`.
`DateTime?` is syntactic sugar for `Nullable<DateTime>`, where `Nullable` is itself a `struct`.
Problem
I am reading a .NET book, and in one of the code examples there is a class definition with this field: ``` private DateTime? startdate ``` What does `DateTime?` mean?