DateTime устанавливает значение по умолчанию DateTime.Min. Когда вы распечатываете его (что относится к его методу ToString ()), печатается его текущее значение.
Вот пример:
class Program
{
static void Main(string[] args)
{
ChrisTime t = new ChrisTime();
Console.WriteLine(t);
DateTime time = new DateTime();
Console.WriteLine(time);
Console.Read();
}
}
public struct ChrisTime
{
private int _length;
public int Length
{
get
{
return _length;
}
set
{
_length = value;
}
}
public override string ToString()
{
return Length.ToString();
}
}
Распечатывает:
0
01/01/0001 00:00:00
Но если вы попытаетесь инициализировать _length в 1, произойдет сбой, так как вы не можете этого сделать и установить конструкторы. Однако метод ToString DateTime выполняет:
public override string ToString()
{
return DateTimeFormat.Format(this, null, DateTimeFormatInfo.CurrentInfo);
}
Вы видите поля DateTime, отформатированные в строковом формате. Таким образом, день, месяц, год, час, минута и секунда равны нулю, как и следовало ожидать от вновь созданного объекта.