9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
1

Что происходит при A = this

27.06.2014, 18:47. Показов 1181. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа, есть такой вот говнокод
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
class a
{
    public int Value()
    {
        return 45;
    }
}
class b : a
{
    public int ReturnVAl()
    {
        a A = this; // Здесь создается новый объект класса B или что ??
        return A.Value();
    }
}
class c
{
    static void Main()
    {
        Console.WriteLine(new b().ReturnVAl());
    }
}
Когда мы присваиваем переменной a A = this происходит ли создание объекта класса b ?? Или что происходит в данный момент ??
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2014, 18:47
Ответы с готовыми решениями:

Что происходит при создании переменной?
Что происходит при создании какой либо переменной? int x; Выделяется память (даже если переменная...

При удержании кнопки что-то происходит
Всем привет, мне нужно чтобы при удержании кнопки на клавиатуре происходило какое-то действия, буду...

Что происходит в памяти при наследовании?
class Program : Foo { static void Main(string args) { Program example = new...

Что происходит при создании объекта?
Button btnU = new Button(); Button (вначале выражения) - что означает? btnU - что означает? =...

4
123 / 123 / 72
Регистрация: 11.05.2014
Сообщений: 331
27.06.2014, 18:54 2
Будет создан объект класса b, ссылка на который будет присвоена переменной А с типом а.
1
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
27.06.2014, 18:58 3
bazyzy, создаете ссылку на объект типа А и присваиваете ему ссылку на текущий объект (типа В).
Только к чему это надо? Не пойму...

Добавлено через 1 минуту
Цитата Сообщение от bazyzy Посмотреть сообщение
происходит ли создание объекта класса b
Объект класса В уже должен быть создан (иначе вы не вызовете его метод, так ведь?).
1
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
27.06.2014, 19:01 4
Новый не создаётся. Присваивается уже созданный.
В данном контексте this - это экземпляр класса b, который ты присваиваешь объекту A имеющий тип базового класса. Объект класса b создается вот в этой строке:
C#
1
Console.WriteLine(new b().ReturnVAl());
именно он и присваивается.
2
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
27.06.2014, 19:04 5
Лучший ответ Сообщение было отмечено bazyzy как решение

Решение

C#
1
Console.WriteLine(new b().ReturnVAl());
new b() означает создание екземпляра класса b, который наследует класс а у которого есть публичный метод который возвращает 45.
последовательность такова:
1) new b создает новый екземпляр класса b
2) при вызове ReturnVAl создается локальная переменная А которая является САМИМ КЛАССОМ b, тоесть a A = this означает "возьми ссылку на текущий екземпляр класса b и помести ее в А, потому что this возвращает ссылку на текущий екземпляр, в данном случае это b
3) так как b наследует а то А.Value вернет 45

Добавлено через 2 минуты
Цитата Сообщение от Detect Посмотреть сообщение
Будет создан объект класса b, ссылка на который будет присвоена переменной А с типом а.
a A = this; - в этой строке не будет ничего создано, просто ссылка на текущий екземпляр класса b скопируется в переменную A.
Создастся же все здесь:
new b().ReturnVAl()
2
27.06.2014, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2014, 19:04
Помогаю со студенческими работами здесь

Что происходит при Array.Sort
помогите описать строчку там два метода т.е. что там происходит Array.Sort(s, (p1, p) =>...

Что происходит в памяти при объявлении переменной
Простите за глупый вопрос, но он меня все же терзает))) Что происходит в памяти при объявлении...

Что происходит с переменной при операциях типа x = x++
Подскажите пожалуйста, что происходит с точки зрения памяти при выполнении следующей операции:...

Отслеживание клика мыши, и того что происходит при клике
Всем привет),помогите:cry:.Такая запара,надо отслеживать клик левой кнопки мыши,и если при клике...

Что происходит с данными класса-наследника при таком приведении
изучал оф.мануал, рихтера и нейджела. залип вот на каком моменте: "в С# нет специального...

Определить, что происходит при вводе значений, не соответствующих требуемому типу или выходящих за пределы
Не проходили C#, но задали задания, вообще не в курсе как делать. Построить циклическое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru