progs.biz  
Начало>VB.NET>Основы>Урок 57
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Заказать на Озоне



Яндекс-цитирования

Основы 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".

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


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