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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как преобразовать object {decimal} к int? 
:(
    Опции темы
Dims
Дата 16.3.2010, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

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



Почему такая программа

Код

decimal a = 12m;
object b = a;
int c = (int)b;


вызывает такую ошибку

Код

Заданное приведение является недопустимым.
InvalidCastException


?

И как это обойти, не зная, что тип внутри object именно decimal?

Почему сообщение об ошибке на русском языке?
PM MAIL   Вверх
Kanes
Дата 16.3.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Dims @  16.3.2010,  20:04 Найти цитируемый пост)
И как это обойти, не зная, что тип внутри object именно decimal?

никак - decimal не кастуется в int

Цитата(Dims @  16.3.2010,  20:04 Найти цитируемый пост)
Почему сообщение об ошибке на русском языке?

потому что установлен на ПК языковой пакет для .NET
--------------------
Big gun - big future  
PM MAIL   Вверх
Dims
Дата 16.3.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

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



Цитата(Kanes @  16.3.2010,  20:24 Найти цитируемый пост)
никак - decimal не кастуется в int

С каких это пор? Вот такая программа:

Код

decimal a = 12.1m;
//object b = a;
//int c = (int)b;
int c = (int)a;

AddMessage("a=" + a.ToString());
AddMessage("c=" + c.ToString());


выдаёт вот это

Код

a=12,1
c=12


Добавлено через 29 секунд
Цитата(Kanes @  16.3.2010,  20:24 Найти цитируемый пост)
потому что установлен на ПК языковой пакет для .NET 

Вроде нет, потому и спрашиваю.
PM MAIL   Вверх
HalkaR
Дата 16.3.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Все правильно. Сначала должна идти распаковка, а затем приведение типов
Работать будет так int c = (int)(decimal)b;
PM MAIL   Вверх
Dims
Дата 16.3.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

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



Цитата(HalkaR @  16.3.2010,  20:56 Найти цитируемый пост)
Работать будет так int c = (int)(decimal)b; 

Это понятно, но я не знаю, что внутри decimal, поэтому так не получится.
PM MAIL   Вверх
PashaPash
Дата 16.3.2010, 21:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

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



Dims, Convert.ToInt32(b)


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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