Well, the variable (in C#, 99 % of the variables are a "pointer" to a referenced object) is of a specific object.

In C++, you also cast a pointer to a specific type if you want to call its functions. In C#, it works exactly the same. You need to convert the object to the right type so you can call the right functions on it.