Megosztás a következőn keresztül:


Útmutató: Olyan eljárás túlterhelése, amely határozatlan számú paramétert használ (Visual Basic)

Ha egy eljárás ParamArray paraméterrel rendelkezik , nem definiálhat túlterhelt verziót, amely egydimenziós tömböt vesz fel a paramétertömbhöz. További információért lásd: "Implicit túlterhelések egy ParamArray paraméterhez" a Túlterhelési eljárások szempontjai című részben.

Változó számú paramétert használó eljárás túlterhelése

  1. Győződjön meg arról, hogy az eljárás és a kódlogika meghívása több előnyt biztosít a túlterhelt verzióknak, mint egy ParamArray paraméternek. Lásd: "Túlterhelések és paramétertömbök" az eljárások túlterhelésének szempontjai alatt.

  2. Határozza meg, hogy az eljárás milyen számú megadott értéket fogadjon el a paraméterlista változó részében. Ez magában foglalhatja az érték nélküli esetet, és egyetlen egydimenziós tömb esetét is.

  3. Minden elfogadható számú megadott érték esetén írjon be egy Sub vagy Function deklarációs utasítást, amely meghatározza a megfelelő paraméterlistát. Ebben a túlterhelt verzióban ne használja sem a Optional kulcsszót, sem a ParamArray kulcsszót.

  4. Minden deklarációban előzze meg a Sub vagy Function kulcsszót a Overloads kulcsszóval.

  5. Minden egyes deklarációt követően írja be az eljáráskódot, amelyet akkor kell végrehajtani, amikor a hívó kód megadja az adott deklaráció paraméterlistájának megfelelő értékeket.

  6. Az egyes eljárásokat a End Sub vagy End Function utasítással fejezze be, a helyzetnek megfelelően.

példa

Az alábbi példa egy ParamArray paraméterrel definiált eljárást, majd a túlterhelt eljárások egyenértékű készletét mutatja be.

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.

Az ilyen eljárásokat nem lehet túlterhelni olyan paraméterlistával, amely egydimenziós tömböt vesz igénybe a paramétertömbhöz. Használhatja azonban a többi implicit túlterhelés aláírását is. Ezt az alábbi deklarációk szemléltetik.

' 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)

A túlterhelt verziók kódjának nem kell tesztelnie, hogy a hívó kód adott-e meg egy vagy több értéket a ParamArray paraméterhez, vagy ha igen, hányat. A Visual Basic a hívó argumentumlistának megfelelő verzióra továbbítja a vezérlőt.

A kód összeállítása

Mivel egy ParamArray paraméterrel rendelkező eljárás egyenértékű a túlterhelt verziók halmazával, az ilyen eljárásokat nem lehet túlterhelni ezen implicit túlterhelések egyikének megfelelő paraméterlistával. További információkért lásd a túlterhelési eljárások szempontjait.

.NET-keretrendszer biztonsága

Ha olyan tömbbel dolgozik, amely határtalanul nagy lehet, fennáll annak a veszélye, hogy meghaladja az alkalmazás belső kapacitását. Ha elfogad egy paraméterekből álló tömböt, ellenőrizze a tömb hosszát, és tegyen meg megfelelő lépéseket, ha az túl nagy az alkalmazás számára.

Lásd még