![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
допустим есть Bitmap m_clean и Bitmap m_image и надо скопировать m_image в m_clean
почему надо делать так
а так не работает
? |
||||
|
|||||
| dzaraev |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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. Вот почему. Поэтому вот так можно:
а вот так нельзя:
Compiler Error CS0266 Это сообщение отредактировал(а) dzaraev - 2.7.2013, 20:01 --------------------
Если вопрос решён - помечайте тему. |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Object это любой класс? или это какой то базовый класс в C#?
|
|||
|
||||
| dzaraev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: нет Всего: 1 |
Вообще это базовый тип CLR, от которого неявно наследуются все возможные типы CLR. Это корень иерархии типов CLR. В терминах языка C#, Object- это базовый класс для любых классов C#. Только не спрашивайте что такое CLR, есть ведь Google и есть MSDN. Вообще, понятие "класс" относится к языкам (например C#) а понятие "тип" - к самой среде (CLR). Внутри .NET сборки нет классов вообще, ни классов ни структур ни перечислений (Enum), есть только "типы", которые описаны в таблицах метаданных сборки. Благодаря этому одна и та же сборка с одним и тем же набором типов может использоваться в разных языках программирования, которые поддерживаются платформой .NET (C#, F#, VB.NET и т.д.) - везде будет доступен один и тот же тип Object, хотя в одном языке он может называться классом, в другом - структурой, в третьем еще чем-то. --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |