![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Demonid |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 12.10.2007 Репутация: 1 Всего: 1 |
Тип
ето обьект или нет? |
|||
|
||||
| zaver |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 15.8.2005 Репутация: 1 Всего: 3 |
это класс
|
|||
|
||||
| Demonid |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 12.10.2007 Репутация: 1 Всего: 1 |
Но переменая етого типа есть обьектом или нет? |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 5 Всего: 42 |
Demonid, безусловно. В .Net нет необьектов. Они могут быть примитивными (primitive) или не быть, но все они обьекты.
|
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
zaver, это структура! Это сообщение отредактировал(а) tol05 - 12.10.2007, 17:03 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
а структура по-твоему не класс?
2аффтар: в С# есть две большие разницы- значимые типы и ссылочные типы. Копай в эту сторону -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
структура - это не класс.
Всегда поражаюсь случаям гордости или упорства в отстаивании своего невежества!
не понял ни хрена. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| zaver |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 15.8.2005 Репутация: 1 Всего: 3 |
в С# структура - это объект, а объект - элемент класса.
|
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
zaver, посмотри, что чуваки на твоем аватаре делают? Сделай то же самое. .............................................................................................................................................................................................................................................. структура - это тип данных. класс - это тип данных интерфейс - это тип данных перечисление - это тип данных делегат - это тип данных .............................................................................................................................................................................................................................................. но для ИМИТАЦИИ полиморфного поведения все эти типы ПРИВОДЯТСЯ К ТИПУ OBJECT .............................................................................................................................................................................................................................................. я по-другому объяснить не могу (в силу разных причин), но надеюсь, что авторитетные участники на это буду способны. Пусть они попытаются. Это сообщение отредактировал(а) tol05 - 12.10.2007, 18:18 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| zaver |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 15.8.2005 Репутация: 1 Всего: 3 |
ну я где-то понял
но всеравно такие вопросы:
во время имитации приводится к
? ---------------------------------------------------
MyClass - класс или структура? |
||||||
|
|||||||
| tol05 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
Структуры размещаются в стеке, классы - в куче, а для взаимодействия между классами и структурами сделали абстрактный класс ValueType, наследник от object. А от ValueType уже наследуются структуры и получают доступ к интерфейсу класса Object. Но это НЕ ДЕЛАЕТ ИХ КЛАССАМИ. Они также будут размещаться в стеке, копироваться по значению, не будут поддерживать наследования и т.п. P.S. код
писать нельзя. Компилятор не пропустит. Это просто код для пояснения вышеизложенных идей. И вместо этого кода нужно писать
Это сообщение отредактировал(а) tol05 - 12.10.2007, 19:41 -------------------- На хорошей работе и сны хорошие снятся. |
||||||||
|
|||||||||
| archeg |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 4 Всего: 27 |
Такой код ты не закомпилишь (выкидуеться ошибка типа MyClass cannot derive drom special class ValueType). Но это ограничение компилятора. В IL код структуры выглядит как:
Думаю ValueType - это скорее формальность. Он задает поведение структуры - JIT обнаружив такую штуку знает, что ее нужно рамещать в стеке и т.д. Структуры - есть структуры, Классы - есть классы. Как уже написал tol05, ValueType существует для того чтобы позволить боксинг. Тем не менее даже после боксинга структура помечается где-то что она структура. Кстати привести структуру к ValueType можно - при этом тоже выполняется боксинг Это сообщение отредактировал(а) archeg - 12.10.2007, 19:55 -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
||||||
|
|||||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
archeg,то, что для структур у разлаботчиков MSIL не нашлось отдельного слова - это ИМХО на их совести
Ведь компилятор, встретив в MSIL "extends [mscorlib]System.ValueType" - понимает, что это - структура, правда? Есть еще такая возможность определения структур в MSIL
Можно структуру назвать как "класс, но без наследования, без полиморфизма, всегда размещаемый в стеке, всегда копируемый по значению" Можно интерфейс назвать как "класс, но без полей, со всеми членами - абстрактными" Можно делегат назвать как "класс, предназгаченный для хранения указателя на функцию" Можно класс назвать как "перечисление, но с наследованием, в куче размещаемое, может не содержать данных" И т.д. и т.п. Если одна сущность кардинально отличается от другой сущности, то для этой, другой сущности, нужно свое название. Поэтому "класс, не являющийся ООП классом и хранящийся в стеке" называется структурой. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |