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?

Original source

Related problems