Вопрос о наследовании типов - C#

Узнай цену своей работы

Формулировка задачи:

Товарищи, подскажите пожалуйста
static void Main()
    {
        object [] A = new string[3] { "1", "2", "3" };
        Console.WriteLine(A[1]);
    }
Почему выводится значение 1 индекса ?? Ведь по идее оно не должно выводиться, так как object это всего лишь базовый класс, а string производный от него. Но базовый класс не имеет доступа к элементам производного, кроме тех которые сами были унаследованы от базового. То есть получается, что обжект не должен получить доступ к массиву. Вот здесь, например правильно получается, что нет доступа
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
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы