True.В C # все происходит от типа object
.Но так как вы помещаете в переменные разные типы данных, вы должны указать, какой это особый тип объекта (byte, string, int, ...), поэтому .net Framework знает, как интерпретировать содержащиеся в нем данные..
Например, как фреймворк добавил бы два (int) объекта, если не знает, что содержимое каждого из них является int?
Вот и весь смысл присвоения переменной типа.Если вы это сделаете, фреймворк знает, какие методы он может позволить вам выполнить для этих объектов, в то же время делая операции безопасными для типов.
Немного больше о безопасности типов, если вы хотите: http://en.wikipedia.org/wiki/Type_safety