Доступ к эл-там структуры через свойтсво класса

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

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

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Доступ к эл-там структуры через свойтсво класса

Сообщение Tarik » 11.07.2004 (Вс) 14:22

Заранее извиняюся за, возможно, ламерский вопрос, но это мой первый опыт реального использования VB .NET 8) В общем, ситуация такая: Есть класс myClass, а в нём структура myStruct. В структуре - элементы
Код: Выделить всё
Dim myVar1 as Int32
Dim myVar2 as Int32
...

В классе объявлена перменная
Код: Выделить всё
dim m_mynew as myStruct

Так вот, как получить доступ к mynew.myVar1 через сво-во класса (скажем, myProp)?
На такой код он ругается:
Код: Выделить всё
    Property myProp() As myStruct
        Get
            myProp = m_mynew
        End Get
        Set(ByVal Value As sRent)
            m_mynew = Value
        End Set
    End Property
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 11.07.2004 (Вс) 16:55

надо посмотреть конечно но у меня возникли такие замечания:
1. myProp = m_mynew
лучше заменить на return m_mynew
2. ты в set'e принимаешь переменную типа sRent а пытаешься ее присвоить своей структуре ??? явное не совпадение типов!
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 11.07.2004 (Вс) 19:18

1. Учтём
2. Это я просто забыл sRent на myStruct поменять :oops: . Я взял кусок своего кода и переделал его под гипотетический код :) А так у меня Option strict включён, так что несоответствия быть не может в принципе.
В общем-то, если сделать это сложно, то можно всё в ствойства класса запихать, потому как в структуре всего 4 эл-та...
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 11.07.2004 (Вс) 20:52

ну у меня получился такой класс (к примеру)
Код: Выделить всё
Public Class Class1

    Structure myStruct
        Dim D1 As Integer
        Dim D2 As Integer
        Dim D3 As Integer
    End Structure

    Protected m_mynew As myStruct

    Public Sub New()
        m_mynew.D1 = 1
        m_mynew.D2 = 2
        m_mynew.D3 = 3
    End Sub

    Property myProp() As myStruct
        Get
            Return m_mynew
        End Get
        Set(ByVal Value As myStruct)
            m_mynew = Value
        End Set
    End Property

End Class

ну а на форме при обращении к нему я написал так:
Код: Выделить всё
        Dim classmy As New Class1()
        Dim tof As Class1.myStruct
        MsgBox(classmy.myProp.D1)
        MsgBox(classmy.myProp.D2)
        MsgBox(classmy.myProp.D3)
        tof.D1 = 5
        tof.D2 = 6
        tof.D3 = 7
        classmy.myProp = tof
        MsgBox(classmy.myProp.D1)
        MsgBox(classmy.myProp.D2)
        MsgBox(classmy.myProp.D3)


ps если не помогло то тогда давай код будем смотреть..
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 11.07.2004 (Вс) 23:10

Всё, понял 8) Для структуры надо отдельную переменную объявлять
Код: Выделить всё
Dim tof As Class1.myStruct

А я пытался всё делать напрямую через свойство
Код: Выделить всё
classmy.myProp.D1=...

Спасибо за помощь!

З. Ы. Вот только не совсем понятно, почему нельзя сделать через classmy.myProp.D1 :?
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 12.07.2004 (Пн) 9:13

ну наверно потому что в set'e указано что принимаемым значением будет что-то типа myStruct, а ты пытаешься ему что-то другое подсунуть :roll: :roll:
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 12.07.2004 (Пн) 9:47

Понятно... Короче, чтоб не объявлять ещё одну переменную я всё в св-ва класса перенёс. Дёшево и сердито :)
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 12.07.2004 (Пн) 17:28

сделал бы несколько дополнительных пропертей которые устанавливают поля структуры, было бы лучше(imho)...
Ничто так не ограничивает полёт мысли программиста, как компилятор


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

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

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

    TopList