Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка в приведении  (Прочитано 13701 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Gor
Постоялец

ru
Offline Offline

« : 08-10-2012 17:58 » 

Привет!

Есть код:
Код: (C#)
object ob = new Empl(39.7, “Gans”);
float f = (float)ob;

Выдает ошибку: «Specified cast is not valid». Почему? Вроде все так…
Спасибо.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 08-10-2012 18:09 » 

А какое значение ожидаете получить для f? (Так, на всякий случай, если бы каким-то непостижимым для меня образом это приведение вдруг сработало).
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 08-10-2012 18:12 » 

я ни хрена не понимаю.. если это правильный код, то зачем такое извращение?

Вот что это, какой тип?
object ob

А это?
float f

А что умеет объект Empl, какие есть у него методы?

Не... не понимаю...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 08-10-2012 18:30 » 

Скорее всего глупейшая опечатка - после ob должно следовать какое-то свойство.

Но самый факт вопроса свидетельствует о полном невосприятии кода и синтаксиса.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #4 : 08-10-2012 19:27 » 

Дело в том, что переменную ob можно присвоить к типу float. А вот присвоить значение этого типа объекту Empl невозможно.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 08-10-2012 20:25 » 

А вот присвоить значение этого типа объекту Empl невозможно.

Ну так этого и не наблюдается.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 08-10-2012 20:40 » 

Дело в том, что переменную ob можно присвоить к типу float. А вот присвоить значение этого типа объекту Empl невозможно.

Во-первых, переменную нельзя присвоить к типу. А во-вторых, в чем же все-таки заключается вопрос?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 09-10-2012 08:00 » 

Скорее всего глупейшая опечатка - после ob должно следовать какое-то свойство.

Однозначно. Причём, скорей всего, первый параметр конструктора. Всё остальное - бред.

зы Больше всего мне нравятся посты à la "есть код". Где он есть? Зачем он есть? Он был всегда?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Gadget
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 09-10-2012 08:33 » 

Gor, любой тип данных в языке c# (будь то стандартный int или float или какой-то пользовательский тип Empl) является частным случаем типа object. то есть каждый float есть object, но не каждый object есть float. любой тип ты можешь привести к object. но object ты не можешь приводить к чему вздумается.
Код: (C#)
object ob = new Empl(39.7, “Gans”);
означает, что ты cоздаешь экземпляр своего загадочного Empl и присваеваешь его переменной типа object. если ты хочешь в дальнейшем использовать какие-то поля своего загадочного экземпляра, то тебе нужно было присваивать его переменной типа Empl, то есть
Код: (C#)
Empl empl = new Empl(39.7, “Gans”);
насколько я понимаю, в Empl есть какое-то поле типа float. назовем его FloatField. чтобы воспользоваться им тебе нужно обратиться к переменной empl:
Код: (C#)
float f=empl.FloatField;
Это ты хотел сделать?
Записан
Gor
Постоялец

ru
Offline Offline

« Ответ #9 : 09-10-2012 19:21 » 

Gadget и остальным большое спасибо (искренне) за помощь. Но суть вопроса была в другом. Что надо, я получил.

ЗЫ Джон, да перестань ты обижаться. Ага
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #10 : 10-10-2012 09:11 » 

ЗЫ Джон, да перестань ты обижаться. Ага

Перестань? А когда это я начал обижаться? Для справки: я вобще никогда не обижаюсь. ИМХО это досуг бездельников. У меня нет просто на это времени. Ага
Я рад (искренне), что ты получил что надо, умело скрыв от нас суть вопроса, оставив в полном недоумении, чем же тебе всё-таки помогли, лишний раз доказав справедливость тезиса: дело помощи утопающим - дело рук самих утопающих.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 10-10-2012 09:24 » 

Жень, тебе надо присвоить приз месяца за искрометную шутку: каску и коническое ведро с песком Отлично
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #12 : 10-10-2012 09:43 » new

Каска у меня уже есть. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 10-10-2012 17:50 » 

Тогда багор! Улыбаюсь




А вообще, конечно, это офтопик. Извиняюсь.

* щит.jpg (72.75 Кб - загружено 1627 раз.)
« Последнее редактирование: 10-10-2012 17:53 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines