Skillnader mellan ändringsbara och icke-modifierbara argument (Visual Basic)
När du anropar en procedur skickar du vanligtvis ett eller flera argument till den. Varje argument motsvarar ett underliggande programmeringselement. Både de underliggande elementen och själva argumenten kan vara antingen ändringsbara eller icke-modifierbara.
Modifierbara och icke-modifierbara element
Ett programmeringselement kan antingen vara ett ändringsbart element, som kan få sitt värde ändrat, eller ett element som inte kan modifieras, som har ett fast värde när det har skapats.
I följande tabell visas ändringsbara och icke-modifierbara programmeringselement.
Ändringsbara element | Icke-modifierande element |
---|---|
Lokala variabler (deklarerade inuti procedurer), inklusive objektvariabler, förutom skrivskyddade | Skrivskyddade variabler, fält och egenskaper |
Fält (medlemsvariabler för moduler, klasser och strukturer), förutom skrivskyddade | Konstanter och literaler |
Egenskaper, förutom skrivskyddade | Uppräkningsmedlemmar |
Vektorelement | Uttryck (även om elementen kan ändras) |
Ändringsbara och icke-modifierbara argument
Ett ändringsbart argument är ett med ett ändringsbart underliggande element. Den anropande koden kan när som helst lagra ett nytt värde, och om du skickar argumentet ByRef kan koden i proceduren också ändra det underliggande elementet i den anropande koden.
Ett icke-modifierat argument har antingen ett icke-modifierat underliggande element eller så skickas ByVal. Proceduren kan inte ändra det underliggande elementet i den anropande koden, även om det är ett ändringsbart element. Om det är ett icke-modifierat element kan den anropande koden inte ändra den.
Den anropade proceduren kan ändra den lokala kopian av ett icke-modifierat argument, men den ändringen påverkar inte det underliggande elementet i den anropande koden.
Se även
- Förfaranden
- Procedureparametrar och argument
- Anvisningar: Skicka argument till en procedur
- Skicka argument efter värde och efter referens
- Skillnader mellan att skicka ett argument efter värde och efter referens
- Anvisningar: Ändra värdet för ett procedurargument
- Så här: Skydda ett procedurargument mot värdeändringar
- Instruktioner: Tvinga ett argument att skickas av värde
- Skicka argument efter position och efter namn
- Värdetyper och referenstyper