Sdílet prostřednictvím


Aspekty přetížení procedur (Visual Basic)

Při postupu, přetěžovat, musíte použít jinou podpis pro každou verzi přetížené.To obvykle znamená, že každá verze je třeba zadat seznam různých parametrů.Další informace naleznete v části "Jiný podpis" v Procedura přetížení (Visual Basic).

Může přetížit Function postup Sub postup a naopak, mají různé podpisy.Dva přetížení nelze se liší pouze v tom, že jeden má vrácené hodnoty a druhý nikoli.

Vlastnost může přetížit přetěžování postup, stejným způsobem a s stejná omezení.Nelze však přetěžování postup s vlastností nebo naopak.

Alternativy přetížené verze

Máte někdy alternativ přetížených verzí, zejména při jejich počet je proměnná nebo přítomnost argumentů je volitelné.

Mějte na paměti, volitelné argumenty nejsou podporovány nutně všechny jazyky a parametr matice jsou omezeny na Visual Basic.Pokud postup, který by mohly volat z kódu, které jsou zapsány v některém z několika různých jazyků psaní přetížený nabízejí nejvyšší verze.

Přetížení a volitelné argumenty

Volající kód můžete volitelně zadat nebo vynechání jednoho nebo více argumentů, můžete definovat více verzí přetížené nebo pomocí volitelné parametry.

Použití přetížených verzí

Můžete zvážit definování řad přetížených verzí v následujících případech:

  • Logika v kódu postup je výrazně liší v závislosti na tom, zda volající kód dodávky nepovinný argument nebo ne.

  • Kód postupu nelze spolehlivě otestovat, zda volající kód dodal nepovinný argument.Případě, například pokud neexistuje žádné možné kandidáta pro výchozí hodnotu volající kód není lze očekávat dodávek.

Použití volitelných parametrů

Raději jeden nebo více nepovinných parametrů v následujících případech:

  • Požadovaná akce pouze v případě, že volající kód neposkytuje nepovinný argument je nastavena na výchozí hodnotu parametru.V takovém případě může být kód postupu méně komplikované definování jediné verze s jedním nebo více Optional parametry.

Další informace naleznete v tématu Volitelné parametry (Visual Basic).

Přetížení a ParamArrays

Volající kód můžete předat proměnné počet argumentů, můžete definovat více verzí přetížené nebo použít parametr array.

Použití přetížených verzí

Můžete zvážit definování řad přetížených verzí v následujících případech:

  • Víte, že volající kód nikdy předává než malý počet hodnot pole parametru.

  • Logiky kód postupu se výrazně liší v závislosti na tom, kolik hodnot předá volající kód.

  • Volající kód předat hodnoty různých datových typů.

Použití pole parametru

Lepší obsluhovaný ParamArray parametr v následujících případech:

  • Nelze předpovědět, kolik hodnoty volající kód můžete předat parametr array a může být velké množství.

  • Procedura logiky různě iterace všech hodnot předá volající kód provádí stejné operace v podstatě na všechny hodnoty.

Další informace naleznete v tématu Pole parametrů (Visual Basic).

Implicitní přetížení pro volitelné parametry

Procedura Nepovinné (Visual Basic) je ekvivalentní dva přetížené procedury s volitelný parametr a jeden bez parametru.Tento postup nelze přetěžování tyto odpovídající seznam parametrů.Následující prohlášení ilustrují to.

Overloads Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads. 
' Overloads Sub q(ByVal b As Byte) 
' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use. 
' Overloads Sub q(ByVal c As Byte, ByVal k As Long) 
' The following overload uses a different signature and is valid. 
Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)

Postup více volitelný parametr je sada implicitní přetížení, potřebnost logika je podobné jako v předchozím příkladu.

Implicitní přetížení pro parametr ParamArray

Kompilátor považuje postup s ParamArray (Visual Basic) parametr mít neomezený počet přetížení, lišící se od sebe v co volající kód předá parametr pole takto:

  • Jeden přetížení pro volající kód při neposkytuje argumentParamArray

  • Jeden přetížení pro při volající kód dodávky jednorozměrné pole ParamArray typ prvku

  • Pro každé kladné celé číslo jedna přetěžování pro při volající kód dodává tento počet argumentů, každý ParamArray typ prvku

Následující prohlášení ilustrují tyto implicitní přetížení.

Overloads Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads. 
' Overloads Sub p(ByVal d As Date) 
' Overloads Sub p(ByVal d As Date, ByVal c() As Char) 
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char) 
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char) 
' And so on, with an additional Char argument in each successive overload.

Postup, pomocí seznamu parametr, který trvá jednorozměrné pole parametru nelze přetížit.Můžete však použít podpisy implicitní přetížení.Následující prohlášení ilustrují to.

' The following overload is not valid because it takes an array for the parameter array. 
' Overloads Sub p(ByVal x As Date, ByVal y() As Char) 
' The following overload takes a single value for the parameter array and is valid. 
Overloads Sub p(ByVal z As Date, ByVal w As Char)

Jako alternativu k přetížení typeless programování

Pokud chcete povolit volající kód předat různé typy dat parametru, je alternativní přístup typeless programování.Můžete nastavit typ kontroly přepnout do Off buď Option Strict – příkaz nebo /optionstrict volba kompilátoru.Pak nemáte deklarovat datový typ parametru.Tento přístup má však ve srovnání s přetížení následující nevýhody:

  • Typeless programování vytváří méně efektivní provádění kódu.

  • Pro každý typ dat je připravená předávaný musí zkušební postup.

  • Kompilátor nemůže signál chyby, pokud volající kód předává typ dat, který nepodporuje postupem.

Viz také

Úkoly

Řešení potíží s procedurami (Visual Basic)

Postupy: Definice více verzí procedury (Visual Basic)

Postupy: Volání přetížené procedury (Visual Basic)

Postupy: Přetížení procedury, která přebírá volitelné parametry (Visual Basic)

Postupy: Přetížení procedury, která přebírá nekonečný počet parametrů (Visual Basic).

Referenční dokumentace

Přetížení (Visual Basic)

Koncepty

Procedury v jazyce Visual Basic

Parametry a argumenty procedury (Visual Basic)

Rozlišení přetěžování (Visual Basic)