Что будет выведено в результате выполнения программы? class Program { static void Main(string[]
args) { var a = new A { B = 3 }; Console.Write(a is System.Object); var o = a as System.Object; Console.Write(o.B); } } public class A { public int B; }Ответы на вопрос
Ответ:
Будет ошибка при компиляции
Объяснение:
При приведении к типу object, скрывается поле B, соответственно обратиться к нему нельзя.
PS: Если закомментировать Console.Write(o.B);, то программа выведет True, так как объект класса A является также объектом класса Object, который стоит на вершине иерархии классов. Создавая класс A мы неявным образом наследуем его от класса Object.
Результат выполнения программы будет следующим:
True3
Давайте разберемся, почему так происходит:
var a = new A { B = 3 };создает экземпляр классаAи устанавливает значение поляBравным 3.Console.Write(a is System.Object);выполняет проверку, является ли переменнаяaэкземпляром классаSystem.Object. В данном случае,aна самом деле является экземпляром классаA, но так как каждый объект в C# является наследником классаSystem.Object, условие истинно, и будет выведено "True".var o = a as System.Object;выполняет попытку приведения объектаaк типуSystem.Object. Посколькуaдействительно является объектом, это приведение проходит успешно, и переменнаяoссылается на тот же самый объект, что иa.Console.Write(o.B);выводит значение поляBобъектаo, которое равно 3, так какoссылается на тот же объект, что иa.
Итак, программе удается успешно проверить наследование класса, выполнить приведение типов и вывести значение поля B.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
