.NET and X# permit an enhanced casting of variables. Using the casting the compiler can will check the properties and methods of the object. local oObject as object local oDateTime as object oObject := DateTime.Now oObject:AddYears( 1 ) // compiler error here ( ( DateTime ) oObject ):AddYears( 1 ) // works oDateTime := oObject // compiler error here oDateTime := ( DateTime ) oObject //works The ''astype'' statement is an advanced form of casting, but if works only on datatypes that can be null: oString := oObject asytype string In the case that oObject is not a string, the null value is assigned to the oString variable. The following code will not work as ''DateTime'' cannot have a null value: local oDateTime as DateTime oDateTime := oObject astype DateTime This code will only work if you use ''Nullable'' instead of ''DateTime''