Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос про ООП в Vb.net

15K
20 апреля 2006 года
Iceman
19 / / 20.04.2006
Может ли мне кто-нибудь точно сказать, поддерживает ли VB.NET перегрузку операторов в классах?
Потому как примеры в MSDN'е по перегрузке операторов приводятся только для C#, а про VB.NET ничего конкретного не сказано.
ЗЫ: И если можно, дайте ссылку на источник информации, плз
273
20 апреля 2006 года
3A3-968M
1.2K / / 22.12.2005
Конечно перегружать можно и в VB.NET:
Public Shared Operator +(Boolean a, Boolean b) As Boolean
Dim i As Integer
i=Convert.ToBoolean(Convert.ToInt32(a)+Convert.ToInt32(b))
End Operator
Странно, что ты об этом в MSDN не нашёл. Выбери в Document Explorer'e фильтр Visual Basic и набери operator overloading в поиске.
15K
20 апреля 2006 года
Iceman
19 / / 20.04.2006
Цитата:
Originally posted by 3A3-968M
Конечно перегружать можно и в VB.NET:
Public Shared Operator +(Boolean a, Boolean b) As Boolean
Dim i As Integer
i=Convert.ToBoolean(Convert.ToInt32(a)+Convert.ToInt32(b))
End Operator
Странно, что ты об этом в MSDN не нашёл. Выбери в Document Explorer'e фильтр Visual Basic и набери operator overloading в поиске.



Спасибо, но так вот как раз в том-то и дело, что не работает этот код!!!
VB ругается сразу на первую строчку и все, до свидания.
Мой VB не понимает слова Operator.

Может, дело в версии Visual Studio? у меня - 2003...

273
21 апреля 2006 года
3A3-968M
1.2K / / 22.12.2005
Приведи полный текст ошибки
15K
21 апреля 2006 года
Iceman
19 / / 20.04.2006
Цитата:
Originally posted by 3A3-968M
Приведи полный текст ошибки


Так ведь нету его (текста ошибки)! Я лучше программу приведу, и объясню, как она НЕработает:

Код:
Public Class intComplex
    Private iReal As Integer
    Private iImage As Integer
   
    Public Sub New()
        iReal = 0 : iImage = 0
    End Sub
   
    Public Sub New(ByVal r As Integer, ByVal i As Integer)
        iReal = r : iImage = i
    End Sub
   
    Public Property Real()
        Get
            Return iReal
        End Get
        Set(ByVal Value)
            iReal = Value
        End Set
    End Property

    Public Property Image()
        Get
            Return iImage
        End Get
        Set(ByVal Value)
            iImage = Value
        End Set
    End Property

    Public Overrides Function ToString() As String
        ' тут неважно что...
    End Function

е1: Public Shared Operator +(ByVal a As intComplex, _
                     ByVal b As intComplex) As intComplex
        ' тут неважно что...
    End Operator
End Class

'где-то в модуле...
    Dim c As New intComplex(1,2)
    Dim c2 As New intComplex(3,4)
    Dim c3 As New intComplex
е2: c3 = c + c2

Ошибки выдает на строке е1:
все что после слова Operator подчеркивает и пишет
Цитата:
End of statement expected


На строке e2:
Цитата:
Operator '+' is not defined for types 'ByteClass.intComplex' and 'ByteClass.intComplex'.

15K
21 апреля 2006 года
Iceman
19 / / 20.04.2006
Цитата:
Originally posted by Iceman
Может, дело в версии Visual Studio? у меня - 2003...




Все, вопрос можно считать закрытым! Дело в том, что поддержка перегрузки операторов в классах появилась только в Visual Studio 2005. Источник информации - http://www.vbstreets.ru/Articles/66077.aspx

273
22 апреля 2006 года
3A3-968M
1.2K / / 22.12.2005
Ща будет оффтоп:)
Если ты строишь класс-сумматор комплексных чисел, рекомендую изучить более оптимальный способ хранения мнимой и вещественной части. В твоём примере ты их хранишь отдельно, тогда как можно хранить их вместе. Для этого можно перевести комплексное число в систему исчисления с основанием i или -1+i, и тогда из комплексного числа получишь одно десятеричное. Правда такие системы исчисления не принадлежат множествам из абелевой группы
15K
22 апреля 2006 года
Iceman
19 / / 20.04.2006
Цитата:
Originally posted by 3A3-968M
Ща будет оффтоп:)
Если ты строишь класс-сумматор комплексных чисел, рекомендую изучить более оптимальный способ хранения мнимой и вещественной части. В твоём примере ты их хранишь отдельно, тогда как можно хранить их вместе. Для этого можно перевести комплексное число в систему исчисления с основанием i или -1+i, и тогда из комплексного числа получишь одно десятеричное. Правда такие системы исчисления не принадлежат множествам из абелевой группы



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

273
23 апреля 2006 года
3A3-968M
1.2K / / 22.12.2005
Ну, например, у Д. Кнута в книге "Искусство программирования" или в книге Г. Уоррен "Алгоритмические трюки"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог