In the .NET Framework, all types are derived from System.Object. In C#, the object keyword is a synonym for this same type. System.Object is the base class for all other types in .NET, including built-in types and custom types.
In C#, all types can be upcast to object.
1
2
3
4
5
6
7
8
| string msg = "A string";int n = 42;Person me = new Person("Sean", 46);// Can assign anything to an object variableobject o = msg;o = n;o = me; |
Any class that you create in C# is automatically derived from object.
The object type defines the following instance methods:
- bool Equals(object)
- void Finalize()
- int GetHashCode()
- Type GetType()
- object MemberwiseClone()
- string ToString()
The object type defines the following static methods:
- bool Equals(object, object)
- bool ReferenceEquals(object, object)
This means that every new class automatically inherits these methods.
1
2
3
| Person me = new Person("Sean", 46);int hash = me.GetHashCode(); |

