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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bitmap и Clone() 
:(
    Опции темы
mrgloom
Дата 2.7.2013, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



допустим есть Bitmap m_clean и Bitmap m_image и надо скопировать m_image в m_clean


почему надо делать так 
Код

m_clean = (Bitmap)m_image.Clone();


а так не работает

Код

m_clean = m_image.Clone();


?
PM MAIL   Вверх
dzaraev
Дата 2.7.2013, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Потому, что тип Object, который возвращается из Clone() НЕ может быть НЕявно преобразован к типу Bitmap. 
Не может он этого сделать потому, что тип№1 в CLR можно НЕявно  преобразовать к типу№2 только если тип№2 является базовым для типа№1, либо если в типе№2 определён оператор неявного преобразования из типа№1 в тип№2. Во остальных случаях компилятор C# будет требовать явного приведения типов - т.е. указание (тип№2) в скобочках перед значением типа№1.
Тип№1 в вашем случае - Object, тип№2 - Bitmap.

Короче.  
Bitmap - это наследник Object, а не наоборот. А Clone() возвращает именно Object. Вот почему.

Поэтому вот так можно: 
Код

Object m_clean = m_image.Clone();

а вот так нельзя:
Код

Bitmap m_clean = m_image.Clone(); //Compiler Error CS0266


Compiler Error CS0266

Это сообщение отредактировал(а) dzaraev - 2.7.2013, 20:01
--------------------
Если вопрос решён - помечайте тему.  
PM MAIL   Вверх
mrgloom
Дата 3.7.2013, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Object  это любой класс? или это какой то базовый класс в C#?
PM MAIL   Вверх
dzaraev
Дата 3.7.2013, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mrgloom @  3.7.2013,  09:26 Найти цитируемый пост)
Object  это любой класс? или это какой то базовый класс в C#? 

Вообще это базовый тип CLR, от которого неявно наследуются все возможные типы CLR. Это корень иерархии типов CLR.
В терминах языка C#, Object- это базовый класс для любых классов C#.
Только не спрашивайте что такое CLR, есть ведь Google и есть MSDN.

Вообще, понятие "класс" относится к языкам (например C#)  а понятие "тип" - к самой среде (CLR). Внутри .NET сборки  нет классов вообще, ни классов ни структур ни перечислений (Enum), есть только "типы", которые описаны в таблицах метаданных сборки. Благодаря этому одна и та же сборка с одним и тем же набором типов может использоваться в разных языках программирования, которые поддерживаются платформой .NET (C#, F#, VB.NET и т.д.) - везде будет доступен один и тот же тип Object, хотя в одном языке он может называться классом, в другом - структурой, в третьем еще чем-то.
--------------------
Если вопрос решён - помечайте тему.  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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