Вопрос о наследовании типов - C#
Формулировка задачи:
Товарищи, подскажите пожалуйста
Почему выводится значение 1 индекса ?? Ведь по идее оно не должно выводиться, так как object это всего лишь базовый класс, а string производный от него. Но базовый класс не имеет доступа к элементам производного, кроме тех которые сами были унаследованы от базового. То есть получается, что обжект не должен получить доступ к массиву.
Вот здесь, например правильно получается, что нет доступа
static void Main() { object [] A = new string[3] { "1", "2", "3" }; Console.WriteLine(A[1]); }
using System; class a { public int x = 9; } class b : a { public new int x = 88; } class c : b { public new int x = 388; } class d { static void Main() { object a = new c(); Console.WriteLine(a.x); } }
Решение задачи: «Вопрос о наследовании типов»
textual
Листинг программы
class a { public int x = 9; public override string ToString() { return "a"; } } class b : a { public new int x = 88; public override string ToString() { return "b"; } } class c : b { public new int x = 388; public override string ToString() { return "c"; } } class Program { static void Main(string[] args) { object obj = new c(); Console.WriteLine(obj.GetType()); // ConsoleApp.c Console.WriteLine(obj.ToString()); // c } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д