Re: Туплю с приведением типа
От: weakfish  
Дата: 18.04.08 13:01
Оценка: 2 (2) +1
Компилятор вроде не должен ругаться, должно возникать исключение на этапе исполнения.
Что бы его обойти приводи следующим образом.
byte b = (byte)(int)o;
Re: Туплю с приведением типа
От: JohnnyJ Германия  
Дата: 18.04.08 13:17
Оценка: +1
см. метод Convert.ToByte
Зри в корень!
Re: Туплю с приведением типа
От: nikov США http://www.linkedin.com/in/nikov
Дата: 18.04.08 14:55
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>Как обойти?


Попробуйте так:

using System;

class Program
{
    static void Main()
    {
        object o = 5; // или 5L, или 5UL ...
        byte b = ((IConvertible)o).ToByte(null);
    }
}
Туплю с приведением типа
От: Аноним  
Дата: 18.04.08 12:55
Оценка:
Имеется такой код:

object o = 5;

// ...

byte b = (byte)o;


Сначала создается объект с числовым значением (и только числовым). Через его свойство GetType() видно, что ему был присвоен тип Int32.

Через некоторое время в программе надо из этого объекта сделать тип byte. Компилятор ругается на такое приведение. Как обойти?

PS: задаваемое числовое значение входит в границы типа byte.
Re: Туплю с приведением типа
От: DelMadman  
Дата: 18.04.08 13:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Имеется такой код:


А>
А>object o = 5;

А>// ...

А>byte b = (byte)o;
А>


А>Сначала создается объект с числовым значением (и только числовым). Через его свойство GetType() видно, что ему был присвоен тип Int32.


А>Через некоторое время в программе надо из этого объекта сделать тип byte. Компилятор ругается на такое приведение. Как обойти?


А>PS: задаваемое числовое значение входит в границы типа byte.


ты сначала должен привести к базовому типу, который был до упаковки, а потом к которому хочешь.

byte b = (byte)(int)o;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.