Вопросы по созданию классов

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

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

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Вопросы по созданию классов

Сообщение natcap » 10.06.2009 (Ср) 15:26

1. Есть класс, у него есть некий Property (String) но оно может принимать только 2 фиксированных значения - можно это как-то задать?
2. нужно некое Property, которое на самом деле будет представлять из себя коллекцию, каждая запись которой состоит 2-х значений (String1, String2) - как это реализовать?
В классе который я использовала в 6.0 было сделано так:
Код: Выделить всё
    Public Sub AddField(Name, value)
        ReDim Preserve Fields(UBound(Fields) + 1)
        Fields(UBound(Fields)) = Array(Name, value)
    End Sub


Заранее спасибо :)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

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

Re: Вопросы по созданию классов

Сообщение MIT » 10.06.2009 (Ср) 16:48

1. Enum
2. Что мешает сделать тоже самое и в .NET`е?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Вопросы по созданию классов

Сообщение Nord777 » 10.06.2009 (Ср) 16:54

1. Есть класс, у него есть некий Property (String) но оно может принимать только 2 фиксированных значения - можно это как-то задать?
2. нужно некое Property, которое на самом деле будет представлять из себя коллекцию, каждая запись которой состоит 2-х значений (String1, String2) - как это реализовать?

Код: Выделить всё
Public Class Form1

   '****************************************
   '************** ВОПРОС №1 ***************
   '****************************************
   Public Enum TwoFixedValues
      Ivanov = 1
      Petrov = 2
   End Enum

   Private _LastName As String

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Manager = TwoFixedValues.Ivanov
      MsgBox(Manager.ToString)
   End Sub

   Public Property Manager() As TwoFixedValues

      Get
         Return _LastName
      End Get


      Set(ByVal value As TwoFixedValues)

         Select Case value
            Case TwoFixedValues.Ivanov, TwoFixedValues.Petrov
               _LastName = value.ToString
            Case Else
               Throw New Exception("Unknown value")
         End Select

      End Set
   End Property


   '****************************************
   '************** ВОПРОС №2 ***************
   '****************************************
   Private Fields As New List(Of Field)
   Public Sub AddField(ByVal Name, ByVal value)
      Fields.Add(New Field(Name, value))
   End Sub


   Public Class Field
      Dim _Name As String
      Dim _Value As String

      Sub New(ByVal Name As String, ByVal Value As String)
         _Name = Name
         _Value = Value
      End Sub

      Public ReadOnly Property Name() As String
         Get
            Return _Name
         End Get
      End Property

      Public ReadOnly Property Value() As String
         Get
            Return _Value
         End Get
      End Property

   End Class

End Class


Added
Ещё обрати внимание на:
Object explorer писал(а):Public Class Dictionary(Of TKey, TValue)
Inherits System.Object
является членом: System.Collections.Generic
Сводка:
Представляет коллекцию ключей и значений.

Параметры-типы:
TKey: Тип ключей в словаре.
TValue: Тип значений в словаре.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Вопросы по созданию классов

Сообщение natcap » 10.06.2009 (Ср) 17:10

Спасибки :)

А Enum как понимаю может внутри себя иметь только числовое значение? Значит придется выбирать удобство работы с классом или доп обработка :(
со 2 пунктом пошларазбираться :)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

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

Re: Вопросы по созданию классов

Сообщение Williams » 10.06.2009 (Ср) 17:12

В ответе Nord'а на вопрос номер 1 выбрасывается исключение при несоотстветвии. Еще в блоке Set свойства при несоотстветствии можно оставить значения без изменений, или же присвоить нужные значение "по-умолчанию".

В плане Enum - да. Его цель в том, чтобы предоставить возможность выбора опций. Однако, есть возможность получить название Enum'а. Например:
MessageBox.Show([Enum].GetName(GetType(Environment.SpecialFolder), Environment.SpecialFolder.Cookies))
Последний раз редактировалось Williams 10.06.2009 (Ср) 17:18, всего редактировалось 1 раз.
И вы думаете, что вас оставят в живых после прочтения этого поста?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Вопросы по созданию классов

Сообщение Nord777 » 10.06.2009 (Ср) 17:14

Первый вопрс. Вариант №2.
Код: Выделить всё
   Public Property Manager1(ByVal LastName As TwoFixedValues) As String
      Get
         Return _LastName
      End Get
      Set(ByVal value As String)
         Select Case LastName
            Case TwoFixedValues.Ivanov, TwoFixedValues.Petrov
               _LastName = value
            Case Else
               Throw New Exception("Unknown value")
         End Select
      End Set
   End Property


и использование:
Код: Выделить всё
      Manager1(TwoFixedValues.Ivanov) = "Ivanov Ivan Ivanovich"
      MsgBox(Manager1(TwoFixedValues.Ivanov))
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Вопросы по созданию классов

Сообщение natcap » 10.06.2009 (Ср) 17:43

Мда как-то печально с Enum-ом все...
для одного случая с небольшими доработками смогла использовать 1 вариант Nord'a а вот во втором только второй... :(((

Но главное эти проблемы решены :) Спасибо еще раз всем откликнувшимся :)

П.С. а можно что-то поставить чтобы при просмтре объекта в студии не показывало Name и _Name? (дублирование)

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

Re: Вопросы по созданию классов

Сообщение Williams » 10.06.2009 (Ср) 17:57

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

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Вопросы по созданию классов

Сообщение natcap » 10.06.2009 (Ср) 18:06

Они и есть приватные, но все равно в режиме просмотра объекта при отладке показываются
Где-то встречала что надо что-то в "<>" написать, но ЧТО - не помню и найти не могу :(
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

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

Re: Вопросы по созданию классов

Сообщение Williams » 10.06.2009 (Ср) 18:13

natcap писал(а):Они и есть приватные, но все равно в режиме просмотра объекта при отладке показываются
Где-то встречала что надо что-то в "<>" написать, но ЧТО - не помню и найти не могу :(



посмотри аттрибуты тут:

http://msdn.microsoft.com/en-us/library/ms228992.aspx

по-моему оно...
И вы думаете, что вас оставят в живых после прочтения этого поста?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Вопросы по созданию классов

Сообщение Nord777 » 10.06.2009 (Ср) 18:14

но все равно в режиме просмотра объекта при отладке показываются
Они и будут показываться. Это же в одной сборке.
Чтобы не париться с атрибутами, в окне "Контрольные значения" вбей нужные переменные и наблюдай только их.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Re: Вопросы по созданию классов

Сообщение natcap » 10.06.2009 (Ср) 19:11

Williams писал(а):
natcap писал(а):Они и есть приватные, но все равно в режиме просмотра объекта при отладке показываются
Где-то встречала что надо что-то в "<>" написать, но ЧТО - не помню и найти не могу :(



посмотри аттрибуты тут:

http://msdn.microsoft.com/en-us/library/ms228992.aspx

по-моему оно...



Не совсем оно, но знания лишними не бывают ;)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)


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

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

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

    TopList