It is treated as System.Object, but in addition, any member access (method call, field, property, or indexer access, or a delegate invocation) or application of an operator on a value of such type is permitted without any type checking, and its resolution is postponed until run-time.
In the code sample above this permits GetLength function to treat the value returned by a call to Length as an integer without any explicit cast.
Generic interfaces and delegates can have their type parameters marked as covariant or contravariant using keywords out and in respectively.
Given a COM method with the signature the invocation can now be written as either or C# 4.0 introduces optional parameters with default values as seen in Visual Basic and C++.
For example: With support for optional parameters, the code can be shortened as Which, due to the now optional ref keyword when using COM, can further be shortened as Indexed properties (and default properties) of COM objects are now recognized, but C# objects still do not support them.