Приведение строки к типу переменной

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Приведение строки к типу переменной

Сообщение viter.alex » 31.01.2010 (Вс) 22:49

Можно ли преобразовать строковое значение в значение переменной?
Нужно нечто такое:
Код: Выделить всё
Sub MyConvert(ByRef Variable As Object, ByVal TypeName As String)
  Dim obj As Object = TypeName
  Try
    Variable = CType(obj, Variable.GetType)
  Catch ex As Exception

  End Try
End Sub

Т.е. если передать этой процедуре переменную типа Integer, а в TypeName строковое значение "43434", чтобы в переменную записалось значение 43434. Строка точно будет содержать нужное значение, которое точно можно преобразовать к типу этой переменной.
Лучше день потерять — потом за пять минут долететь!

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Приведение строки к типу переменной

Сообщение 1Steps » 01.02.2010 (Пн) 0:22

Код: Выделить всё
        Dim t As System.Type
        Dim s As Object = "344344"
        Dim ss As Object = 344344
        t = s.GetType
        MsgBox(t.ToString)
        t = ss.GetType
        MsgBox(t.ToString)
Удалена за ненадобностью.

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Приведение строки к типу переменной

Сообщение viter.alex » 01.02.2010 (Пн) 0:31

Это всё понятно, но как записать выражение
Код: Выделить всё
ss=Ctype(s,ss.GetType)
Лучше день потерять — потом за пять минут долететь!

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Приведение строки к типу переменной

Сообщение Roman Koff » 01.02.2010 (Пн) 10:17

Для частных случаев правильно использовать функцию .TryParse (или .Parse) от необходимого типа данных, например:
Код: Выделить всё
Dim S01 As String = "10"
Dim I01 As Integer
If Not Integer.TryParse(S01, I01) Then
   I01 = 0
End If

Сделать универсальный преобразователь это, ихмо, чтото некорректное. Тогда уж лучше сводить задачу к сериализации.
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Приведение строки к типу переменной

Сообщение FireFenix » 01.02.2010 (Пн) 13:29

Можно ещё заюзать TryCast или DirectCast (по словам мсдн - лучше их использовать для преобразования типов)

или
Код: Выделить всё
Try
    Value = Convert.ToInt32(Object) 'Convert.ToSingle  и т.д.
Catch ex As Exception
    MsgBox("Ошибка: Несоответствие типа Intger (32-bit)")
End Try
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

    TopList