возможные варианты текстовой информации в переменной

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

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

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 26.11.2008 (Ср) 11:33

Доброго времени уважаемые.
Прошу прощение за беспокойство и за нечеткое формирование вопроса! :oops:

Мне нужно создать переменную, или константу, которая будет предлагать возможные варианты текстовой информации, скажем три варианта строк:
1) "aaa"
2) "bbb"
3) "ccc"
Создание структуры врядли подойдет...
С уважением, Сергей.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: возможные варианты текстовой информации в переменной

Сообщение Денис » 26.11.2008 (Ср) 11:40

Код: Выделить всё
    Private Enum A1 As Integer
        aaa = 1
        bbb = 2
        ccc = 3
    End Enum


И еще: В этом энуме хоть и будет выводиться "текстовая информация" с вариантами значений, но значения тем не менее, будут числовыми. если нужно чтобы были именно текстовые значения - придется писать класс.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 26.11.2008 (Ср) 13:02

Денис писал(а):
Код: Выделить всё
    Private Enum A1 As Integer
        aaa = 1
        bbb = 2
        ccc = 3
    End Enum


И еще: В этом энуме хоть и будет выводиться "текстовая информация" с вариантами значений, но значения тем не менее, будут числовыми. если нужно чтобы были именно текстовые значения - придется писать класс.


Спасибо Денис.
Не знал, что значения перечисления A1.aaa.ToString в данном случае могут подойти.
Но как быть с реальной ситуацией, где вместо "aaa" должно быть "System.Data.SqlClient", а вместо "bbb" должно быть "System.Data.OleDb" и т.п.?

Разумеется код:
Код: Выделить всё
Private Enum A1 As Integer
        System.Data.SqlClient = 1
        System.Data.OleDb = 2
End Enum

Выдает ошибку.
С уважением, Сергей.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: возможные варианты текстовой информации в переменной

Сообщение Денис » 26.11.2008 (Ср) 13:48

sergey-911 писал(а):Но как быть с реальной ситуацией, где вместо "aaa" должно быть "System.Data.SqlClient", а вместо "bbb" должно быть "System.Data.OleDb" и т.п.?


Удалил

Ну, вобщем, да, я как всегда нагородил огород с классами, методами. А как сказал Viper в следующем сообщении, достаточно воспользоваться коллекцией:
Код: Выделить всё
        Private N1 As Collection = New Collection

    sub Example()

        With N1
            .Add("sdfsd.df.fdfd", "aaa")
            .Add("sdewr.ui.ertd", "bbb")
            .Add("wqwqw.yt.ytyf", "ccc")
        End With

        MsgBox(N1.Item("bbb")

    End Sub

Век живи — век учись.
Последний раз редактировалось Денис 26.11.2008 (Ср) 15:24, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: возможные варианты текстовой информации в переменной

Сообщение Viper » 26.11.2008 (Ср) 14:51

sergey-911 писал(а):Но как быть с реальной ситуацией, где вместо "aaa" должно быть "System.Data.SqlClient", а вместо "bbb" должно быть "System.Data.OleDb" и т.п.?
Коллекция, где "aaa" есть ключ, а "System.Data.SqlClient", соответственно, значение.
Весь мир матрица, а мы в нем потоки байтов!

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 26.11.2008 (Ср) 15:14

Спасибо Денис! :D
С уважением, Сергей.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: возможные варианты текстовой информации в переменной

Сообщение Williams » 26.11.2008 (Ср) 15:22

Dim Dic As New Dictionary(Of String, Нужный_тип) позволит находить объекты пользуясь ключом (String), а также добавлять и удалять их.
И вы думаете, что вас оставят в живых после прочтения этого поста?

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 27.11.2008 (Чт) 9:13

Спасибо уважаемые. Объясните популярно плиз преимущества коллекции... Чем код:
Код: Выделить всё
       Private N1 As Collection = New Collection

    sub Example()

        With N1
            .Add("sdfsd.df.fdfd", "aaa")
            .Add("sdewr.ui.ertd", "bbb")
            .Add("wqwqw.yt.ytyf", "ccc")
        End With

        MsgBox(N1.Item("bbb")

    End Sub


предпочтительнее:
Код: Выделить всё
       'Перечисление в роли Alias-a
       Public Enum _StringProvider As Integer
           SqlClient = 1
           OleDbClient = 2
       End Enum

        'Функция, перечисляющая строки провайдеров
        Public Function GetStringProvider(ByVal Index As _StringProvider) As String
            Select Case Index
                Case MyConnect._StringProvider.SqlClient
                    Return "System.Data.SqlClient"
                Case MyConnect._StringProvider.OleDbClient
                    Return "System.Data.OleDb"
                Case Else
                    MsgBox("Укажите провайдера подключения!")
                    Return Nothing
            End Select
        End Function
   
   'Выводим значение
        MsgBox(GetStringProvider(_StringProvider.OleDbClient))

?
По-моему вызов значения
Код: Выделить всё
StringProvider = GetStringProvider(_StringProvider.OleDbClient)

удобнее
Код: Выделить всё
MsgBox(N1.Item("bbb")

В коллекции нужно помнить порядок индексов...

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: возможные варианты текстовой информации в переменной

Сообщение MIT » 27.11.2008 (Чт) 15:42

Если у тебя количество элементов не велико, то разница, в общем-то, только в удобстве. Однако если элементов у тебя будет тысяч 10, то представь себе код, написанный вторым способом. Коллекция (и все ей подобное) предназначено для хранения большова числа значений.

_____________________
added: Также при использовании второго способа невозможно добавить элементы во время работы, состав коллекции же можно изменять как и когда угодно.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 27.11.2008 (Чт) 16:29

А как же самому запомнить 10 тысяч индексов коллекции? Как ассоциировать нужное значение с индексом. Нужно помнить индекс? Или смотреть его постоянно в коде?
С уважением, Сергей.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: возможные варианты текстовой информации в переменной

Сообщение Williams » 27.11.2008 (Чт) 16:33

sergey-911 писал(а):А как же самому запомнить 10 тысяч индексов коллекции? Как ассоциировать нужное значение с индексом. Нужно помнить индекс? Или смотреть его постоянно в коде?

Смотри выше, поиск элементов производится по ключу, а не индексу. В дотнет есть разные типы коллекций и массивов, следует выбрать тот, что соответствует твоим требованиям.
И вы думаете, что вас оставят в живых после прочтения этого поста?

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 28.11.2008 (Пт) 8:23

Спасибо Williams.
Но, если не ошибаюсь, то
Код: Выделить всё
MsgBox(N1.Item("bbb")

и есть вызов по ключу.
В данном случае нужно помнить, что есть ключ "bbb" коллекции "N1". Ведь все возможные ключи не выпадают в виде комбика при наэатии"N1.Item....", или ошибаюсь? Так как все ключи запомнить? Чем отличае от индексов?
Хочу разобраться раз и навсегда, и не поднимать больше таких вопросов.
Спасибо.
С уважением, Сергей.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: возможные варианты текстовой информации в переменной

Сообщение Денис » 28.11.2008 (Пт) 8:37

sergey-911 писал(а):Ведь все возможные ключи не выпадают в виде комбика при наэатии"N1.Item....", или ошибаюсь?

Да. Ошибаешься. Извини, надо было не упускать этот момент. В качестве ключей можешь использовать перечисляемые типы.
Код: Выделить всё
       'Вот твой тип.

       Public Enum _StringProvider As Integer
           SqlClient = 1
           OleDbClient = 2
       End Enum


Код: Выделить всё
       'Вот мой код

       Private N1 As Collection = New Collection

    sub Example()

        With N1
            .Add("sdfsd.df.fdfd", _StringProvider.SqlClient)
            .Add("sdewr.ui.ertd", _StringProvider.OleDbClient)
        End With

        MsgBox(N1.Item(_StringProvider.OleDbClient))

    End Sub
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: возможные варианты текстовой информации в переменной

Сообщение sergey-911 » 28.11.2008 (Пт) 9:48

Спасибо Денис!
Спасибо всем!
:D
С уважением, Сергей.


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

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

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

    TopList