Отправляет email-рассылки с помощью сервиса Sendsay

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки Урок 57. Использование констрейнтов в generic


Уроки по Visual Basic.NET. Рассылки сайта progs.biz
Выпуск № 88
 
Начало > VB.NET > Основы > Урок 57

Чарльз Петцольд. Программирование с использованием Microsoft Windows Forms
Чарльз Петцольд. Программирование с использованием Microsoft Windows Forms
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 57.

Основы VB.NET
Урок 57. Использование констрейнтов в generic

Часто при объявлении generic на формальный тип необходимо наложить некоторые ограничения. Например, в нем должны быть некоторые методы. В этом случае мы можем указать, что он является потомком некоторого класса или интерфейса. Вот пример синтаксиса такой конструкции и способ ее использования:

'Некоторый интерфейс.
Public Interface ISomeObject
    Function SomeMethod0() As Integer
    Function SomeMethod1(ByVal A As Integer) As Boolean
End Interface

' Класс, реализующий интерфейс IMyInterface.
Public Class SomeObject
    Implements ISomeObject
    Function SomeMethod0() As Integer Implements ISomeObject.SomeMethod0
        Console.WriteLine("SomeMethod0 of class SomeObject")
    End Function
    Function SomeMethod1(ByVal A As Integer) As Boolean Implements ISomeObject.SomeMethod1
        Console.WriteLine("SomeMethod1 of class SomeObject")
        Return (A = 0)
    End Function
End Class

' Generic-класс.
Public Class GenericClass(Of T As ISomeObject)
    Public Sub MyFunction(ByVal a As T)
        a.SomeMethod0()
        a.SomeMethod1(2)
    End Sub
    Public a As Integer
End Class

Как вы видите, у нас есть интерфейс ISomeObject и класс SomeObject, реализующий этот интерфейс. Внутри класса 2 метода интерфейса выводят на консоль в числе прочего свои имена. Так же у нас есть generic-класс GenericClass, в объявлении которого мы указали, что его формальный параметр T должен релизовывать наш интерфейс ISomeObject. Т. е. мы можем при объявлении экземпляра класса подставить вместо его формального параметра класс SomeObject (так как он реализует этот интерфейс).

А вот так мы можем использовать наш generic-класс в методе Main:

Module Module1
    Sub Main()
        Dim so As New SomeObject
        ' Создание экземпляра generic-класса.
        Dim z As New GenericClass(Of SomeObject)
        ' Вызов метода generic-класса.
        z.MyFunction(so)
    End Sub
End Module

Выведется на консоль, естественно, 2 строки - "SomeMethod0 of class SomeObject" и "SomeMethod1 of class SomeObject".

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


Parking.ru. Качественный виртуальный хостинг на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый выделенный хостинг на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2007 сайт progs.biz
© 2002-2007 Игорь Алексеев

В избранное