It's simply because the property returns an object so you can then access the properties of the object it returns.
public class Data
{
public int ID { get; set; }
public string Name { get; set; }
}
public class MyClass
{
public Data Data { get; set; }
public MyClass()
{
this.Data = new Data();
}
}
MyClass c = new MyClass();
c.Data.ID = 1;
In the above the Data property is a property of the object, if you make it static then it is a property of the type and that emulates DateTime.Now better
public class MyClass
{
public static Data Data
{
get
{
return new Data();
}
}
}
MyClass.Data.ID = 1;