Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с преобразованием / 8 сообщений из 8, страница 1 из 1
29.09.2004, 19:05
    #32717638
Strannik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
VS2003, ASP.NET под C#.

Есть переменная типа object, на самом деле - System.Int16. Значение 1. При попытке привести к int (int)data вылетает exception - specified cast is not valid. В чем проблема ??
...
Рейтинг: 0 / 0
30.09.2004, 06:06
    #32717900
Radjaman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
используйте Convert.ToInt16(data)

--------------
вышел из рекурсии. и оп-па!
...
Рейтинг: 0 / 0
30.09.2004, 13:23
    #32718615
Strannik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
to Radjaman:

Спасибо! Но почему напрямую не получается ?
...
Рейтинг: 0 / 0
30.09.2004, 14:16
    #32718751
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
да, странно.
а ты уверен, что в object был упакован Int16?
у меня следующий код прокатывает (Framework 1.1)
Код: plaintext
1.
2.
Int16 x = 1;
object obj = x;
Int32 y = (Int32)x;
...
Рейтинг: 0 / 0
30.09.2004, 16:58
    #32718905
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
Может это поможет:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_4_3_2.asp

Вот так работает:

Код: plaintext
1.
2.
3.
Int16 x =  1 ;
object obj = x;
Int32 y = (Int16)obj;
...
Рейтинг: 0 / 0
30.09.2004, 19:18
    #32719095
Strannik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
to Ustazz:

Я использую код:

object data = row["column1"];
int x = (int)data;

Причем использую не sqlconnection, а odbcconnection. Фактически я не знаю
размерность столбца из которого беру данные(это может быть 16,32 или 64 бита). Как же преобразовать в общем случае ?
...
Рейтинг: 0 / 0
01.10.2004, 00:01
    #32719297
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
StrannikКак же преобразовать в общем случае ?можно написать нечто подобное (как Nz в Access + преобразование типа):
Код: plaintext
1.
2.
3.
public static object GetValue(object cellValue, object nullValue, TypeCode toType)
{ 
  return(Convert.ChangeType((!Convert.IsDBNull(cellValue)) ? cellValue : nullValue, toType));
}

нужно быть уверенным, что результирующий тип "вместит" в себя зачение из поля записи
(или использовать try-catch-finally при преобразовании).
...
Рейтинг: 0 / 0
01.10.2004, 14:17
    #32720064
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с преобразованием
Strannikto Ustazz:

Я использую код:

object data = row["column1"];
int x = (int)data;

Причем использую не sqlconnection, а odbcconnection. Фактически я не знаю
размерность столбца из которого беру данные(это может быть 16,32 или 64 бита). Как же преобразовать в общем случае ?

Тогда используй преобразование в Int64 при помощи класса Convert

Код: plaintext
1.
object data = row["column1"];
long x = Convert.ToInt64(data);
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с преобразованием / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]