Sdílet prostřednictvím


Out (generický modifikátor) (Visual Basic)

Obecný typ parametrů Out klíčové slovo určuje typ je covariant.

Poznámky

Kovariance můžete použít typ odvozený více než určený parametrem obecný.To umožňuje implicitní převod třídy, které implementují rozhraní variant a implicitní převod typů delegátů.

Další informace naleznete v tématu Kovariance a kontravariance (C# and Visual Basic).

Pravidla

Můžete použít Out klíčové slovo v obecné rozhraní a delegáty.

V obecné rozhraní mohou být deklarovány parametr typu covariant, pokud splňuje následující podmínky:

V obecné delegát parametr typu lze deklarovat covariant, pokud je použita pouze jako návratový typ metody a nejsou použity pro argumenty metody.

Kovariance a contravariance jsou podporovány pro typy odkazů, ale nejsou podporovány pro typy hodnot.

V jazyce Visual Basic nelze deklarovat bez určení typ delegáta události v covariant rozhraní.Také covariant rozhraní vnořené třídy, výčty nebo struktury, ale jejich mohou vnořené rozhraní.

Chování

Rozhraní covariant typ parametru umožňuje jeho metody vrátit více odvozené typy než zadaný v parametru typu.Například protože v.NET Framework 4, v IEnumerable, je typ t covariant, můžete přiřadit objekt IEnumerabe(Of String) typu objektu IEnumerable(Of Object) typu bez použití jakékoli zvláštní převodu metody.

Covariant delegáta lze přiřadit delegáta jiné stejného typu, ale s více odvozený obecný typ parametru.

Příklad

Následující příklad ukazuje, jak deklarovat, rozšiřovat a covariant obecné rozhraní.Také ukazuje, jak použít implicitní převod pro třídy, které implementují rozhraní covariant.

' Covariant interface. 
Interface ICovariant(Of Out R)
End Interface 

' Extending covariant interface. 
Interface IExtCovariant(Of Out R)
    Inherits ICovariant(Of R)
End Interface 

' Implementing covariant interface. 
Class Sample(Of R)
    Implements ICovariant(Of R)
End Class 

Sub Main()
    Dim iobj As ICovariant(Of Object) = New Sample(Of Object)()
    Dim istr As ICovariant(Of String) = New Sample(Of String)()

    ' You can assign istr to iobj because 
    ' the ICovariant interface is covariant.
    iobj = istr
End Sub

Následující příklad ukazuje, jak deklarovat konkretizovat a vyvolat covariant obecný delegáta.Také ukazuje, jak můžete použít implicitní převod typů delegáta.

' Covariant delegate. 
Public Delegate Function DCovariant(Of Out R)() As R

' Methods that match the delegate signature. 
Public Shared Function SampleControl() As Control
    Return New Control()
End Function 

Public Shared Function SampleButton() As Button
    Return New Button()
End Function 

Private Sub Test()

    ' Instantiating the delegates with the methods. 
    Dim dControl As DCovariant(Of Control) =
        AddressOf SampleControl
    Dim dButton As DCovariant(Of Button) =
        AddressOf SampleButton

    ' You can assign dButton to dControl 
    ' because the DCovariant delegate is covariant.
    dControl = dButton

    ' Invoke the delegate.
    dControl()
End Sub

Viz také

Referenční dokumentace

In (generický modifikátor) (Visual Basic)

Koncepty

Odchylky obecných rozhraní (C# and Visual Basic)