458 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,028
|
|||||||||||
1 | |||||||||||
Обращение и инициализация полей класса23.08.2019, 22:34. Просмотров 465. Ответов 9
Метки нет Все метки)
(
привет!
помогите пожалуйста разобраться, как это работает. нужно понять что просходит под капотом.
0
|
|
23.08.2019, 22:34 | |
Инициализация полей класса Инициализация полей класса Инициализация полей класса конструктором |
|
2217 / 1681 / 505
Регистрация: 02.08.2011
Сообщений: 4,827
|
|||||||||||
24.08.2019, 00:05 | 2 | ||||||||||
1. А вы пробовали запускать это?
Тут будет ошибка в рантайме, так как компилятор не знает какую перегрузку метода вызвать. Подробнее не скажу. 2. Это просто синтаксический сахар. Если взять простенькую программу типа:
Код
.method private hidebysig static void Main(string[] args) cil managed { .entrypoint // Code size 20 (0x14) .maxstack 3 .locals init (class ConsoleApp4_TokenEncoding.Foo V_0) IL_0000: nop IL_0001: newobj instance void ConsoleApp4_TokenEncoding.Foo::.ctor() IL_0006: dup IL_0007: ldstr "Buzz" IL_000c: callvirt instance void ConsoleApp4_TokenEncoding.Foo::set_Bar(string) IL_0011: nop IL_0012: stloc.0 IL_0013: ret } // end of method Program::Main То есть все это дело эквивалентно этому:
1
|
458 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,028
|
|||||||||||
24.08.2019, 00:26 [ТС] | 3 | ||||||||||
Код
mcs file.cs mono file.exe если убрать static. Добавлено через 2 минуты извините, но я еще раз вынужден спросить. печему если я допишу static , то рабоать не будет.
0
|
4568 / 3142 / 1342
Регистрация: 09.05.2015
Сообщений: 7,721
|
|
24.08.2019, 00:32 | 4 |
1
|
458 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,028
|
||||||
24.08.2019, 02:16 [ТС] | 5 | |||||
0
|
2689 / 1948 / 982
Регистрация: 14.08.2016
Сообщений: 6,664
|
|
24.08.2019, 02:19 | 6 |
pcmax, скобки после чего-то означают что это метод
1
|
458 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,028
|
|
24.08.2019, 14:17 [ТС] | 7 |
то есть foo()-это конструктор?
obj- это указатель, который содержит адрес выделенной памяти в куче, под объект типа foo?
0
|
2689 / 1948 / 982
Регистрация: 14.08.2016
Сообщений: 6,664
|
|
24.08.2019, 20:44 | 8 |
pcmax, да
1
|
458 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,028
|
||||||
24.08.2019, 21:52 [ТС] | 9 | |||||
можно еще вопрос?
в с++ мы конструктор по умолчанию вызывается при создании объекта автоматически. в с# это происходит так?
0
|
1108 / 779 / 219
Регистрация: 15.08.2010
Сообщений: 2,159
|
|
24.08.2019, 22:12 | 10 |
в шарпах
obj это ссылка на экземпляр класса, аналог в плюсах MyClass * c = new MyClass;
1
|
24.08.2019, 22:12 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Инициализация полей класса при наследовании Инициализация полей класса через vector<> Инициализация полей во время объявления класса Инициализация вещественных статических константных полей класса С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |