Forskjellen mellom ByVal & ByRef

I Visual Basic, passerer bestått mekanisme argumentene til en prosedyre. Denne passerer mekanismen er spesifisert med en av to søkeord: ". ByRef" "ByVal" eller Disse søkeordene kan du angi om verdien av et argument er passert, eller en referanse til verdien av et argument er vedtatt av mekanismen til prosedyren. Vurdere type funksjonalitet du trenger og utpeke søkeordet som best passer den type funksjonalitet.

Hva er "ByVal"?

"ByVal" er nøkkelordet som instruerer bestått mekanisme for å passere verdien av et argument til en prosedyre. Når du passerer et argument av verdi, Visual Basic kopier verdien og setter den inn i en lokal variabel i prosedyren. Den "ByVal" søkeord er gyldig i "erklære" utsagn, "Function" uttalelser, "operatør" uttalelser, "eiendom" uttalelser, og "sub" uttalelser. Uavhengig av utsagn type, alltid refererer "ByVal" søkeord til bestått mekanisme.

Hva er "ByRef"?

"ByRef" er nøkkelordet som instruerer bestått mekanisme for å passere argumentet med referanse, også referert til som en peker på noen programmering grunnleggende dokumentasjon. Dette går som en direkte referanse til argumentet til prosedyren. "ByRef" er standardspesifikasjonen når du passerer et argument, men en bør inkludere spesifikasjonen for enklere lesing av kode av andre. Den "ByRef" søkeord er gyldig i "erklære" uttalelser, "Funksjon" uttalelser, og "Sub" uttalelser. Like "ByVal", "ByRef" alltid refererer til bestått mekanismen uavhengig av uttalelsen type.

Bruk av "ByRef" og "ByVal"

Hvilke søkeord du bruker avhenger av funksjonaliteten du trenger, og med hva du jobber. Arrays må være bestått ved henvisning, slik at du alltid vil bruke "ByRef" med en matrise. Hvis du ønsker å unngå enhver endring til argumentet og sitt rette element, vil du bruke "ByVal". Dette er fordi "ByVal" ikke tillater endring. Hvis du trenger å være i stand til å gjøre endringer, bruk "ByRef".

"ByRef" vs "ByVal"

Den store forskjellig mellom "ByRef" og "ByVal" er at "ByRef" gir argumentet er elementet som skal endres og "ByVal" ikke. "ByVal" passerer bare en verdi, der "ByRef" passerer en tilkobling. "ByVal" beskytter argument og dens element fra noen endring og "ByRef" gir tilgang for modifikasjons formål. "ByRef" er bedre for forestilling hvor store mengder kode er involvert i argumentet fordi "ByVal" måtte kopiere all koden som det sendes til prosedyren.