Avatar billede Droa Seniormester
23. maj 2015 - 21:52 Der er 8 kommentarer og
1 løsning

Har microsoft opgivet out nøgleordet

Hej eksperter.

Jeg mener tit da jeg kiggede igennem MSDN for klasser der læser igennem IO namespacet, at de har været ret gode til og bruge "out" keywordet, især til det byte array, som giver de data man spørger efter.

int size = Read(int buffersize, out byte[] buffer)

Men jeg har på det seneste set det mindre og mindre, især på MSDN siden, jeg ved ikke om det bare er mig der husker forkert, eller er dette keyword ved og blive faset ud? det har jo altid været lidt af et redundant stykke værktøj, så ville ikke undre mig, hvis det skete.
Avatar billede arne_v Ekspert
24. maj 2015 - 02:28 #1
Jeg er ret sikker paa at MS ikke aendrer eksisterende metoder, da det ville faa eksistende kode til at fejle ved opdatering af .NET.

Generelt er out parametre lidt suspekte, da det kan vaere svaert at gennemskue hvor en ny vaerdi kommer fra.

Jeg fortsaar ikke den Read du viser. Du behoever ikke out paa det byte array for at fylde data i. Du behoever kun out paa det byte array, hvis Read skal lave et helt nyt array.
Avatar billede Droa Seniormester
24. maj 2015 - 02:42 #2
det er nok bare mig der husker forkert, mente bare jeg så "out" blive brugt meget på den måde, men som om det er sunket i jorden.

tror jeg er ved og miste forstanden, kan ikke engang finde et konkret eksempel, som jeg mener og have brugt det mange gange.
Avatar billede kalp Novice
11. juni 2015 - 13:58 #3
Du tænker måske på TryParse hvor man benytter det.

int nr;

int.TryParse("1", out nr);

så den bliver anvendt i stor stil endnu:)
Avatar billede Droa Seniormester
11. juni 2015 - 16:43 #4
du har sikkert ret, for der er de ret glade for at bruge out, kan dog ikke se grunden til det er brugt i trypharse, da jeg vil mene at feltet stadig vil blive korrekt angivet som en referece. :)
Avatar billede arne_v Ekspert
11. juni 2015 - 16:52 #5
int er en value type saa enten ref eller out keyword er noedvendig og da original vaerdien ikke bruges saa out.
Avatar billede Droa Seniormester
11. juni 2015 - 18:34 #6
arhh okay, så når man bruger et array, vil den som default lave en reference?
giver alligevel ret god mening, da de er ret runge og flytte på.

jeg ville lukke spørgsmålet igen, da jeg bare tror det har været mig der lavede en brainfart.

lægger i et svar?
Avatar billede arne_v Ekspert
11. juni 2015 - 18:53 #7
ja - arrays er en ref type

bemaerk at du skal skelne mellem:
* ref typer vs value typer
* pass by ref vs pass by value

alle 4 kombinationer er mulige!
Avatar billede kalp Novice
12. juni 2015 - 12:46 #8
årsagen til at du ikke blot kan gøre følgende:

int i;

i = int.TryParse("1");

det er at du skal kunne tjekke på om det var muligt at parse værdien korrekt.

Det kunne så sætte i til int.MinValue f.eks hvis det fejler, men så skal du stadig til at tjekke på din værdi efterfølgende om den blev parsed korrekt.

Det slipper du for med .TryParse i sin nuværende form, som du kan smide direkte ind i en if condition:)
Avatar billede Droa Seniormester
12. juni 2015 - 17:05 #9
tak kalp, det giver meget god mening :)
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

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