Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skickar ett eller flera argument till en procedur motsvarar varje argument ett underliggande programmeringselement i anropskoden. Du kan skicka antingen värdet för det underliggande elementet eller en referens till det. Detta kallas för överföringsmekanismen.
Överföring av värde
Du skickar ett argument efter värde genom att ange nyckelordet ByVal för motsvarande parameter i procedurdefinitionen. När du använder den här överföringsmekanismen kopierar Visual Basic värdet för det underliggande programmeringselementet till en lokal variabel i proceduren. Procedurkoden har ingen åtkomst till det underliggande elementet i anropskoden.
Skicka med referens
Du skickar ett argument med referens genom att ange nyckelordet ByRef för motsvarande parameter i procedurdefinitionen. När du använder den här överföringsmekanismen ger Visual Basic proceduren en direkt referens till det underliggande programmeringselementet i anropskoden.
Överföringsmekanism och elementtyp
Valet av överföringsmekanism är inte detsamma som klassificeringen av den underliggande elementtypen. Överföring genom värde eller referens syftar på vad Visual Basic lämnar till procedurkoden. En värdetyp eller referenstyp refererar till hur ett programmeringselement lagras i minnet.
Överföringsmekanismen och elementtypen är dock kopplade till varandra. Värdet för en referenstyp är en pekare till data någon annanstans i minnet. Det innebär att när du skickar en referenstyp efter värde har procedurkoden en pekare till det underliggande elementets data, även om den inte kan komma åt själva det underliggande elementet. Om elementet till exempel är en matrisvariabel har procedurkoden inte åtkomst till själva variabeln, men den kan komma åt matrismedlemmarna.
Möjlighet att ändra
När du skickar ett icke-modifierat element som argument kan proceduren aldrig ändra det i anropskoden, oavsett om det skickas ByVal
eller ByRef
.
För ett ändringsbart element sammanfattar följande tabell interaktionen mellan elementtypen och överföringsmekanismen.
Elementtyp | Passerade ByVal |
Passerade ByRef |
---|---|---|
Värdetyp (innehåller endast ett värde) | Proceduren kan inte ändra variabeln eller någon av dess medlemmar. | Proceduren kan ändra variabeln och dess medlemmar. |
Referenstyp (innehåller en pekare till en klass- eller strukturinstans) | Proceduren kan inte ändra variabeln men kan ändra medlemmar i den instans som den pekar på. | Proceduren kan ändra variabeln och medlemmarna i den instans som den pekar på. |
Se även
- Procedurer
- Procedurparametrar och -argument
- Anvisningar: Skicka argument till en procedur
- Överföra argument genom värde och referens
- Skillnader mellan modifierbara och icke-modifierbara argument
- Anvisningar: Ändra värdet för ett procedurargument
- Så här: Skydda ett procedurargument mot värdeändringar
- Hur man tvingar ett argument att skickas som värde
- Passera argument via position och via namn
- Värdetyper och Referenstyper