Avatar billede leander Nybegynder
30. juli 2001 - 22:47 Der er 5 kommentarer og
1 løsning

ByRef? ByVal?

Når jeg laver følgende:

Function Ting()
  Set Ting = New EnEllerAndenKlasse
End Function

Hvordan bliver instansen returneret? Pr. reference, eller value?
Avatar billede torbenmelander Nybegynder
30. juli 2001 - 23:01 #1
Uddrag fra VB-dok:

by value

A way of passing the value, rather than the address, of an argument to a procedure. This allows the procedure to access a copy of the variable. As a result, the variable\'s actual value can\'t be changed by the procedure to which it is passed.

A way of passing the address, rather than the value, of an argument to a procedure. This allows the procedure to access the actual variable. As a result, the variable\'s actual value can be changed by the procedure to which it is passed.

Så jeg vil tro at det er Pr. reference ...

VB-dok kan hentes her: http://msdn.microsoft.com/scripting/vbscript/download/vbsdoc.exe
Avatar billede torbenmelander Nybegynder
30. juli 2001 - 23:03 #2
Ups, der skulle lige have stået by reference før A way of passing the address, ...

Avatar billede stigc Nybegynder
30. juli 2001 - 23:24 #3
byVal og byRef er så vidt jeg ved kun udtryk du bruger i parameterlisten. Altså i de argumenter du overfører til funktionen....

Jeg vil tror at retur parameteren altid er by value. Hvis det var by reference, så vil du miste ramlagret, når du kom tilbage fra funktionen. Lige som i C eller C++, hvor du ikke returnere en pointer til et dynamisk objekt som du har oprettet i funktionen. Her mister du kontrollen over lageret, og kan ikke mere vide hvad variablen peger på...

Håber du forstå hvad jeg mener.
Avatar billede leander Nybegynder
31. juli 2001 - 01:29 #4
hmm... problemet er at jeg gerne ville /vide/ om den gør det ene eller det andet - jeg kan godt se hvad du mener, men i f.eks. C(++) kan du sagtens returnere en pointer, og jeg ville gerne vide om VBScript gør det samme, eller om det er \"by value\"...

så jeg kan desværre ikke acceptere svaret :-/
Avatar billede leander Nybegynder
31. juli 2001 - 01:30 #5
hmm... problemet er at jeg gerne ville /vide/ om den gør det ene eller det andet - jeg kan godt se hvad du mener, men i f.eks. C(++) kan du sagtens returnere en pointer, og jeg ville gerne vide om VBScript gør det samme, eller om det er \"by value\"...

så jeg kan desværre ikke acceptere svaret :-/
Avatar billede kichian Nybegynder
31. juli 2001 - 09:54 #6
Der bliver returneret en reference.(punktum)
Under COM er det sådan, at hver gang der bliver uddelt en reference, så er der en intern tæller som bliver talt op. Når referencen bliver sat til NULL, bliver tælleren talt ned. Når tælleren en 0 bliver objektet de-allokeret (slettet fra hukommelsen).
Det smukke ved VB-Script contra C(++) og andre er, at det skjuler administrationen af COM-objekter og hukommelsesallokering.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester