Bagikan melalui


Cara: Kelebihan Beban Prosedur yang Mengambil Jumlah Parameter Yang Tidak Terbatas (Visual Basic)

Jika prosedur memiliki parameter ParamArray , Anda tidak dapat menentukan versi yang kelebihan beban mengambil array satu dimensi untuk array parameter. Untuk informasi selengkapnya, lihat "Kelebihan Beban Implisit untuk Parameter ParamArray" dalam Pertimbangan dalam Prosedur Kelebihan Muatan.

Untuk membebani prosedur yang mengambil jumlah variabel parameter

  1. Pastikan bahwa prosedur dan logika kode panggilan mendapat manfaat dari versi yang kelebihan beban lebih dari ParamArray parameter. Lihat "Kelebihan Beban dan ParamArrays" dalam Pertimbangan dalam Prosedur Kelebihan Beban.

  2. Tentukan jumlah nilai yang disediakan yang harus diterima prosedur di bagian variabel dari daftar parameter. Ini mungkin termasuk kasus tanpa nilai, dan mungkin termasuk kasus satu array berdimensi satu.

  3. Untuk setiap jumlah nilai yang disediakan yang dapat diterima, tulis Sub pernyataan atau Function deklarasi yang menentukan daftar parameter yang sesuai. Jangan gunakan kata Optional kunci atau ParamArray dalam versi yang kelebihan beban ini.

  4. Dalam setiap deklarasi, awali Sub kata kunci atau Function dengan kata kunci Kelebihan Beban .

  5. Setelah setiap deklarasi, tulis kode prosedur yang harus dijalankan saat kode panggilan menyediakan nilai yang sesuai dengan daftar parameter deklarasi tersebut.

  6. Hentikan setiap prosedur dengan pernyataan End Sub atau End Function yang sesuai.

Contoh

Contoh berikut menunjukkan prosedur yang ditentukan dengan parameter ParamArray , lalu serangkaian prosedur kelebihan beban yang setara.

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.

Anda tidak dapat membebani prosedur seperti itu dengan daftar parameter yang mengambil array satu dimensi untuk array parameter. Namun, Anda dapat menggunakan tanda tangan dari kelebihan beban implisit lainnya. Deklarasi berikut menggambarkan hal ini.

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

Kode dalam versi yang kelebihan beban tidak harus menguji apakah kode panggilan menyediakan satu atau beberapa nilai untuk ParamArray parameter, atau jika demikian, berapa banyak. Visual Basic meneruskan kontrol ke versi yang cocok dengan daftar argumen panggilan.

Mengkompilasi kode

Karena prosedur dengan parameter setara dengan ParamArray sekumpulan versi yang kelebihan beban, Anda tidak dapat membebani prosedur seperti itu dengan daftar parameter yang sesuai dengan salah satu kelebihan beban implisit ini. Untuk informasi selengkapnya, lihat Pertimbangan dalam Prosedur Kelebihan Beban.

Keamanan .NET Framework

Setiap kali Anda berurusan dengan array yang bisa sangat besar, ada risiko melebihi kapasitas internal aplikasi Anda. Jika Anda menerima array parameter, Anda harus menguji panjang array yang diteruskan kode panggilan ke sana, dan mengambil langkah-langkah yang sesuai jika terlalu besar untuk aplikasi Anda.

Lihat juga