Sdílet prostřednictvím


Obecné procedury v jazyce Visual Basic

A Obecný postup, také nazývaná Obecná metoda, je postup definovány alespoň jeden typ parametru.To umožňuje přizpůsobit datové typy jeho požadavky na každém vyvolá postup volající kód.

Postup není obecný jednoduše na základě definovaného uvnitř Obecná třída nebo obecná struktura.Chcete-li být obecné, musí trvat nejméně jeden parametr typu k jakékoliv běžné parametry, které může trvat.Obecná třída nebo struktury obsahují neobecné postupy a neobecné třídu, strukturu, nebo modul může obsahovat obecné postupy.

Obecný postup můžete použít jeho parametry typu v jeho normální parametr seznamu jeho návratový typ, pokud má jeden a postup jeho kód.

Odvození typu

Obecný postup lze volat bez argumentů typu dodávající vůbec.Volání je tímto způsobem, kompilátor pokusí zjistit odpovídající datové typy předat argumenty procedury typu.To se nazývá odvození typu.Následující kód ukazuje volání v které kompilátor odvodí, že by ji předat typu String na parametr typu t.

Public Sub testSub(Of t)(ByVal arg As t)
End Sub 
Public Sub callTestSub()
    testSub("Use this string")
End Sub

Pokud je kompilátor nelze odvodit z kontextu volání argumenty typu, hlásí chybu.Jednou z možných příčin takové chyby je neshoda hodnosti matici.Předpokládejme například, že definovat normální parametr jako maticový parametr typu.Pokud zavoláte obecný postup dodávající matice jiné pořadí (číslo dimenze) neshoda způsobí odvození typu selhání.Následující kód ukazuje volání v které dvourozměrné pole je předána postup, který očekává jednorozměrné pole.

Public Sub demoSub(Of t)(ByVal arg() As t)

End Sub

Public Sub callDemoSub()

Dim twoDimensions(,) As Integer

demoSub(twoDimensions)

End Sub

Odvození typu lze vyvolat pouze vynecháním všech argumentů typu.Pokud zadáte jeden argument typ, je nutné zadat všechny.

Odvození typu je podporována pouze pro obecné postupy.Odvození typu generic třídy, struktury, rozhraní nebo delegátů nelze vyvolat.

Příklad

Description

Následující příklad definuje obecný Function postup vyhledání určitého prvku v matici.Definuje jeden parametr typu a používá vytvořit dva parametry v seznamu parametrů.

Kód

Public Function findElement(Of T As IComparable) (
        ByVal searchArray As T(), ByVal searchValue As T) As Integer 

    If searchArray.GetLength(0) > 0 Then 
        For i As Integer = 0 To searchArray.GetUpperBound(0)
            If searchArray(i).CompareTo(searchValue) = 0 Then Return i
        Next i
    End If 

    Return -1
End Function

Komentáře

V předchozím příkladu vyžaduje možnost porovnávat searchValue proti každému prvku searchArray.Pro zaručení tato možnost omezuje parametr typu T implementovat IComparable rozhraní.Kód používá CompareTo metody namísto = operátor, protože je zaručeno, že zadaný typ argumentu pro T podporuje = operátor.

Můžete vyzkoušet findElement postup s následujícím kódem.

Public Sub tryFindElement()
    Dim stringArray() As String = {"abc", "def", "xyz"}
    Dim stringSearch As String = "abc" 
    Dim integerArray() As Integer = {7, 8, 9}
    Dim integerSearch As Integer = 8
    Dim dateArray() As Date = {#4/17/1969#, #9/20/1998#, #5/31/2004#}
    Dim dateSearch As Date = Microsoft.VisualBasic.DateAndTime.Today
    MsgBox(CStr(findElement(Of String)(stringArray, stringSearch)))
    MsgBox(CStr(findElement(Of Integer)(integerArray, integerSearch)))
    MsgBox(CStr(findElement(Of Date)(dateArray, dateSearch)))
End Sub

Předchozí volání k MsgBox zobrazení "0", "1" a "-1".

Viz také

Úkoly

Postupy: Definice třídy, která poskytne identické funkce pro různé datové typy (Visual Basic).

Postupy: Použití obecné třídy (Visual Basic)

Referenční dokumentace

Seznam typů (Visual Basic)

Seznam parametrů (Visual Basic)

Koncepty

Obecné typy v jazyce Visual Basic (Visual Basic)

Procedury v jazyce Visual Basic

Parametry a argumenty procedury (Visual Basic)