Returnerer verdier med referanse argumenter eller ved struktur

stemmer
0

I hvilken situtations er det best å bruke referanse argumenter for å returnere verdier?


Sub Example(byref value as integer)
  value = 3
End Sub

I hvilke situasjoner er det best å returnere verdien (kanskje i en struktur for mer komplekse typer)?


Function Example() as integer
  return 3
End Function
Publisert på 10/07/2009 klokken 00:09
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Det avhenger egentlig hva funksjonen gjør. Vanligvis, men hvis det er bare en retur, etter verdi er lettere for den som ringer. De kan rett og slett gjøre:

int foo = Example(foo)

eller:

int modifiedFoo = Example(foo)

som de foretrekker.

Svarte 10/07/2009 kl. 00:27
kilden bruker

stemmer
1

Vanligvis ville jeg unngå å bruke referanse argumenter for å gå tilbake verdier.

Utformingen retningslinjer anbefaler å unngå dette, noe som er grunnen til verktøy Microsoft kode analyse advare deg når de finner den. Ikke passere typer som referanse.

Det er nesten alltid mer å vedlikeholde for å returnere verdier i stedet for passerende argumenter som referanse, med mindre det er en veldig spesiell grunn til å gjøre det. Hvis du genererer en ny verdi, returnere den.

Svarte 10/07/2009 kl. 00:29
kilden bruker

stemmer
1

når du ønsker å returnere en tilstand eller status for en operasjon pluss resultat fra driften.

tenke på TryParse..it returnerer en konvertering resultat som sant eller usant, og returnerer den konverterte verdien av en ref variabel.

 Dim number As Integer
 Dim result As Boolean = Int32.TryParse(value, number)


Public Shared Function TryParse ( _
    s As String, _
    <OutAttribute> ByRef result As Integer _
) As Boolean

men annet enn det, som andre foreslo jeg ville ikke bruke av dommeren mye, det kan gjøre kode svært vanskelig å lese og feilsøke.

Svarte 10/07/2009 kl. 00:31
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more