Это бросает исключение, говорят источник не может быть отлит по назначению:C# отливка INT плавать метания исключения (во время выполнения)
int a = 1;
object b = (object)a;
float c = (float)b; // Exception here
Почему?
Это бросает исключение, говорят источник не может быть отлит по назначению:C# отливка INT плавать метания исключения (во время выполнения)
int a = 1;
object b = (object)a;
float c = (float)b; // Exception here
Почему?
Вы можете только бросить штучные структуры к точному типу, так что вам нужно бросить в целом первое:
float c = (float)(int)b;
Однако, поскольку существует неявное преобразование плавать с междунар, вы можете просто сделать:
float c = (int)b;
Насколько я знаю, это потому, что поле «а» как междунар и после этого вы распаковывать его как поплавок и это не подходит ...
, чтобы получить это право, вы должны делать с плавающей точкой с = (float) (int) b;
Вы не можете удалить (сбрасывать на объект и обратно) значение из одного типа данных в другой. Сначала вам нужно вернуть его к первозданному типу, а затем вытащить его. В качестве альтернативы вы можете использовать методы Convert.To*
, например.
Object a = 6;
Double b = Convert.ToDouble(a);
Последующая деятельность: http://www.ideone.com/hgeob
Casting имеет разные значения. В этом случае это означает «unbox», а не «делать числовое преобразование».
Посмотрите на 6 значений здесь:
Проблема заключается в том, что тот же синтаксис используется повторно для 3 операций (историческая проблема с C):
int a = 1; // Ok
object b = (object)a; // Ok. int is struct so we may box it into object
float c = (float)a; // Ok. Conversion from integer to float
float c = (float)b; // Error. object b is not boxed float
UL/OLs смешно с парсером, вам нужно добавить что-то между ними. В этом случае я использовал произвольный фиктивный HTML-тег (чтобы вызвать форматирование, но не мешать самому сообщению). –
Этот вопрос задают очень часто на SO. Подробности см. В моей статье на эту тему.
http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx
возможно дубликат [Почему \ [(целое) (объект) 10м; \] делает исключение «Указанный приведение недействительным»?] (http://stackoverflow.com/questions/3953391/why-intobject10m-does-throw-specified-cast-is-not-valid-exception) –