DateTime.MinValue
In C# programs, DateTime
cannot be assigned to null
. It has a default value that is equal to DateTime.MinValue
.
The DateTime
type is a value type—just like an integer. Instead of null
assignment, we can use the DateTime.MinValue
field.
This example checks the initial value of a DateTime
member variable. When you have a DateTime
instance at the class
level, it is initialized to DateTime.MinValue
by default.
Main
method, a new instance of the Test class
is allocated with the parameterless constructor.DateTime
member variable. It compares the value against DateTime.MinValue
, which returns true.DateTime
dateTime1
= null
" is commented out. This is because it won't compile, and the C# compiler will give you an error.int
to null
.using System; class Test { DateTime _importantTime; public Test() { // // Test instance of DateTime in class. // Console.WriteLine("--- Instance DateTime ---"); Console.WriteLine(_importantTime); Console.WriteLine(_importantTime == DateTime.MinValue); } } class Program { static void Main() { // // Execute code in class constructor. // Test test = new Test(); // // This won't compile! // // DateTime dateTime1 = null; // // This is the best way to null out the DateTime. // DateTime dateTime2 = DateTime.MinValue; // // Finished // Console.WriteLine("Done"); } }--- Instance DateTime --- 1/1/0001 12:00:00 AM True Done
When you try to assign a DateTime
to null
, the compiler will give an error "Cannot convert null
to System.DateTime
". The null
value in the language is only used on reference types.
DateTime
type never points at anything. It stores all its data in place of that reference, directly in the variable itself.Cannot convert null to System.DateTime because it is a non-nullable value type.
We can use the readonly
field DateTime.MinValue
. In the base class library, the MinValue
field is a public static
readonly
field. It won't change throughout a program's execution.
We looked at some issues relating to null
DateTime
variables in C# programs. We can use the DateTime.MinValue
field to initialize new DateTimes
.