O'Reilly logo
  • Jason Myers thinks this is interesting:

The first two releases of the .NET platform did not support generics. Your only choice was to code against System.Object and add appropriate runtime checks to ensure that the runtime type of the object was what you expected, usually a specific type derived from System.Object. This practice was even more widespread in the .NET Framework, because the framework designers were creating a library of lower-level components that would be used by everyone.

System.Object is the ultimate base class for every type you or anyone else creates. That led to the obvious decision to use System.Object as a substitute for “...

From

Cover of More Effective C#: 50 Specific Ways to Improve Your C#

Note

This is one of the most beneficial features C# has over PHP.