В .NET верно, что все типы наследуются от System.Object.
Что я нахожу парадоксальным, так это несколько методов в System.Object, а именно
- публичная виртуальная строка ToString ();
- публичный виртуальный bool Равен (объект objA, объект objB);
System.String наследуется от System.Object:
[Serializable]
public class String : Object { /*...*/ }
System.Boolean наследуется от System.Object:
[Serializable]
public struct Boolean : Object { /*....*/ }
Что происходит под прикрытием, что позволило классу System.Object разрешить использование подклассов в качестве возвращаемых типов в его методах? Как этот код когда-либо компилировался, так как там, кажется, есть циклические ссылки. String <-> Object <-> Boolean.
Я уверен, что увижу операторы, "вот как это реализовано", но я могу понять, были ли эти возвращаемые типы самими "System.Object", а затем подкласс использовал реализации строки , bool и другие System.ValueTypes для объявления нового базового класса.
Надеюсь, это имеет смысл.
Заранее спасибо,
Dominic