Sdílet prostřednictvím


Obecné postupy 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

ms235246.collapse_all(cs-cz,VS.110).gifDescription

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ů.

ms235246.collapse_all(cs-cz,VS.110).gifKó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

ms235246.collapse_all(cs-cz,VS.110).gifKomentář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<T> 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

Postup: definování třídy, který může poskytovat stejné funkce na různé datové typy (Visual Basic)

Jak: použití obecného třídy (Visual Basic)

Referenční dokumentace

Typ seznamu (Visual Basic)

Seznam parametrů (Visual Basic)

Koncepty

Obecné typy jazyka Visual Basic (Visual Basic)

Procedury v jazyce Visual Basic

Postup parametry a argumenty (Visual Basic)