ref er hypersmart, forudsat men ved hvad man laver :)
Ved at bruge ref, kan du ændre variabel værdien inde i metoden og din ref vil efterfølgende være ændret ligeledes.
public void Sort(double[] distance,int startPos,int endPos) versus public void Sort(ref double[] distance,int startPos,int endPos) { double = some new value; } Nu ved jeg ikke lige om jeg ville bruge en ref i denne signatur, men pyt..
det jeg har brug for at holde styr på hvilke ruter der er blevet ændret--- dvs at hvis jeg sender rute (1,2,3)s distancer afsted. med længden (5,7,5) og den sortere dem (1,3,2) så ved den inde i min metode de er ændret eller ?
haha... ja, den er faktisk lidt undervurderet, men ved overforbrug kan programmet kompliceret unødigt. En klasse bør kun have en et ansvar, så husk kun at bruge den imellem metodekald indeni samme klasse. http://en.wikipedia.org/wiki/Single_responsibility_principle
Lidt yderligere info: ref bruges osse til kald mod native DLL'er, f.eks. Win32API'et. Skal der eksempelvis bruges en pointer til en long i et API-kald, så er det lettest at mappe c# wrapperen som en 'ref long'.
Det antyder så osse, at public void Sort(ref double[] distance,int startPos,int endPos) { double = some new value; } arbejder på pointeren distance.
I nogle situationer kan man vinde lidt performance ved at bruge ref parametre fremfor 'normale' parametre. Men det er på bekostning af risiko for side-effekter!
Endelig har 'ref' en stedbror kaldet 'out'. Osse nyttig i nogle situationer.
Synes godt om
Ny brugerNybegynder
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.