Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тип int 
:(
    Опции темы
Demonid
Дата 12.10.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 12.10.2007

Репутация: 1
Всего: 1



Тип 
Код

int
 
ето обьект или нет?
PM MAIL   Вверх
zaver
Дата 12.10.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: 1
Всего: 3



это класс smile
PM MAIL WWW ICQ Skype YIM MSN   Вверх
Demonid
Дата 12.10.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 12.10.2007

Репутация: 1
Всего: 1



Цитата(zaver @ 12.10.2007,  15:45)
это класс smile

Но переменая етого типа есть обьектом или нет?
PM MAIL   Вверх
HalkaR
Дата 12.10.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 5
Всего: 42



Demonid, безусловно. В .Net нет необьектов. Они могут быть примитивными (primitive) или не быть, но все они обьекты.
PM MAIL   Вверх
tol05
Дата 12.10.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



Цитата(zaver @  12.10.2007,  15:45 Найти цитируемый пост)
это класс


zaver, это структура!

 smile 

Это сообщение отредактировал(а) tol05 - 12.10.2007, 17:03


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
1stain
Дата 12.10.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



Цитата(tol05 @  12.10.2007,  17:03 Найти цитируемый пост)
zaver, это структура!  

а структура по-твоему не класс?
Код

            Int32 xx;
            if (xx is Object)
                Console.WriteLine("I'm a Object type heritable instance");


2аффтар: в С# есть две большие разницы- значимые типы и ссылочные типы. Копай в эту сторону smile


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
tol05
Дата 12.10.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



структура - это не класс.

Всегда поражаюсь случаям гордости или упорства в отстаивании своего невежества!

Цитата(1stain @  12.10.2007,  17:40 Найти цитируемый пост)
2аффтар: в С# есть две большие разницы- значимые типы и ссылочные типы. Копай в эту сторону 

не понял ни хрена.



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
zaver
Дата 12.10.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: 1
Всего: 3



в С# структура - это объект, а объект - элемент класса. 
PM MAIL WWW ICQ Skype YIM MSN   Вверх
tol05
Дата 12.10.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



 smile 

zaver, посмотри, что чуваки на твоем аватаре делают? Сделай то же самое.  smile 


..............................................................................................................................................................................................................................................
структура - это тип данных.
класс - это тип данных
интерфейс - это тип данных
перечисление - это тип данных
делегат - это тип данных
..............................................................................................................................................................................................................................................



но для ИМИТАЦИИ полиморфного поведения все эти типы ПРИВОДЯТСЯ К ТИПУ OBJECT


..............................................................................................................................................................................................................................................

я по-другому объяснить не могу (в силу разных причин), но надеюсь, что авторитетные участники на это буду способны.
Пусть они попытаются.

Это сообщение отредактировал(а) tol05 - 12.10.2007, 18:18


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
zaver
Дата 12.10.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: 1
Всего: 3



ну я где-то понял
но всеравно такие вопросы:

Код

struct MyStruct
{
}

во время имитации приводится к
Код

class MyStruct: ValueType
{
}

?
---------------------------------------------------
Код

class MyClass: ValueType
{
}

MyClass - класс или структура?
PM MAIL WWW ICQ Skype YIM MSN   Вверх
tol05
Дата 12.10.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



Цитата

ValueType overrides the virtual methods from Object with more appropriate implementations for value types. See also Enum, which inherits from ValueType.

Data types are separated into value types and reference types. Value types are either stack-allocated or allocated inline in a structure. Reference types are heap-allocated. Both reference and value types are derived from the ultimate base class Object. In cases where it is necessary for a value type to behave like an object, a wrapper that makes the value type look like a reference object is allocated on the heap, and the value type's value is copied into it. The wrapper is marked so the system knows that it contains a value type. This process is known as boxing, and the reverse process is known as unboxing. Boxing and unboxing allow any type to be treated as an object.


Цитата

ValueType переопределяет виртульный методы класса Object с более удобной реализацией для типов значений. См. также Enum, который наследуется из ValueType.

Типы данных разделяются на типы значений и ссылочные типы. Типы значений размещаются либо в стеке, либо внутри структуры. Ссылочные типы размещаются в "куче". Как типы ссылок, так и типы значений происходят из первичного базового класса Object. В том случае, если необходимо, чтобы тип значения вел себя как объект, упаковщик, создающий тип значения, который выглядит как объект ссылки, размещается в "куче", и в него копируется значение типа. Упаковщик в этом случае помечается таким образом, чтобы система понимала, что он содержит тип значения. Этот процесс известен как "упаковка", а обратный процесс — как "распоковка". "Упаковка" и "распоковка" позволяют любому типу рассматриваться в качестве объекта.


Структуры размещаются в стеке, классы - в куче, а для взаимодействия между классами и структурами сделали абстрактный класс ValueType, наследник от object. А от ValueType уже наследуются структуры и получают доступ к интерфейсу класса Object. 
Но это НЕ ДЕЛАЕТ ИХ КЛАССАМИ. Они также будут размещаться в стеке, копироваться по значению, не будут поддерживать наследования и т.п.

P.S. код
Код

class MyStruct: ValueType
{
}

писать нельзя. Компилятор не пропустит. Это просто код для пояснения вышеизложенных идей. И вместо этого кода нужно писать
Код

struct MyStruct
{
}


Это сообщение отредактировал(а) tol05 - 12.10.2007, 19:41


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
archeg
Дата 12.10.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 4
Всего: 27



Цитата(zaver @  12.10.2007,  18:33 Найти цитируемый пост)
---------------------------------------------------
Код

class MyClass: ValueType
{
}

MyClass - класс или структура? 

Такой код ты не закомпилишь (выкидуеться ошибка типа MyClass cannot derive drom special class ValueType). Но это ограничение компилятора. В IL код структуры выглядит как:
Код

.class private sequential ansi sealed beforefieldinit A
    extends [mscorlib]System.ValueType
{
}


Думаю ValueType - это скорее формальность. Он задает поведение структуры - JIT обнаружив такую штуку знает, что ее нужно рамещать в стеке и т.д. Структуры - есть структуры, Классы - есть классы. Как уже написал tol05, ValueType существует для того чтобы позволить боксинг. Тем не менее даже после боксинга структура помечается где-то что она структура.

Кстати привести структуру к ValueType можно - при этом тоже выполняется боксинг

Это сообщение отредактировал(а) archeg - 12.10.2007, 19:55


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
tol05
Дата 13.10.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



archeg,то, что для структур у разлаботчиков MSIL не нашлось отдельного слова - это ИМХО на их совести smile
Ведь компилятор, встретив в MSIL "extends [mscorlib]System.ValueType" - понимает, что это - структура, правда? Есть еще такая возможность определения структур в MSIL
Код

.class private value A
{
}

Можно структуру назвать как "класс, но без наследования, без полиморфизма, всегда размещаемый в стеке, всегда копируемый по значению"
Можно интерфейс назвать как "класс, но без полей, со всеми членами - абстрактными"
Можно делегат назвать как "класс, предназгаченный для хранения указателя на функцию"
Можно класс назвать как "перечисление, но с наследованием, в куче размещаемое, может не содержать данных"

И т.д. и т.п. smile

Если одна сущность кардинально отличается от другой сущности, то для этой, другой сущности, нужно свое название. Поэтому "класс, не являющийся ООП классом и хранящийся в стеке" называется структурой.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0684 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.