Anbefalet, 2024

Redaktørens Valg

Forskel mellem ref og ud i C #

"Ref" og "Out" er parametermodifikatorerne, der anvendes i C #. Ved hjælp af ref og ud kan du overføre enhver værdi type ved henvisning til en hvilken som helst metode. Årsagen til at overføre enhver værdi type ved sin reference introducerer hovedforskellen mellem ref og ud-søgeordet. Ref- søgeordet tillader den kaldte metode at ændre indholdet af argumentet, der er sendt til det med ref-søgeord. Out- søgeordet tillader kaldet metode til at returnere mere end én værdi ved et enkelt opkald. Lad os studere forskellen mellem ref og ud sammen med et sammenligningsdiagram.

Sammenligningstabel

Grundlag for sammenligningRefUd
GrundlæggendeDet tillader ændring i værdien af ​​argumentet fortsættes med ref-søgeord.Det giver mulighed for en metode til at returnere disse værdier forud for et ud søgeord.
InitialiseringRef-parameteren skal initialiseres forud for metodeopkaldet.Out-parameteren skal initialiseres inden for den kaldte metode, inden den afslutter.
ErklæringParameteren, der skal ændres ved en metode, erklæres som ref, mens metodeangivelse og metodeopkald.Parameteren, der skal returneres, skal angives som ref, mens metodeangivelse og metodeopkald.

Definition af Ref Keyword

"Ref" er en parameter modifikator, der anvendes, når der er behov for at kalde en metode med call-by-reference. Når vi ønsker det, skal ændringerne i argumenterne inden for en kaldet metode reflektere i den oprindelige værdi af denne variabel, så anvendes ref parameter parameteren. Værdien typen, som vi ønsker at erklære som ref, foregår af "ref" nøgleordet under metodedeklaration og metodeopkald. Mere end en parameter kan erklæres som en "ref", mens du ringer og erklærer en metode.

 bruger system; klasse DemoRef {public void Square (ref int s) {s = s * s; }} klasse Ref_main {static void Main () {DemoRef ob = ny DemoRef (); int a = 10; Console.WriteLine ("en før metodeopkald:" + a); ob.Square (ref a); // Brugt ref Keyword Console.WriteLine ("et efterfølgende opkald:" + a); }} // output en forudgående metodeopkald: 10 a efter metodeopkald: 100 

I ovenstående kode sendes variablen 'a' som et argument til metoden Square (ref a) sammen med parametermodifieringsref'en, der er knyttet til den. Det betyder, uanset hvorledes metoden Square (ref a) vil udføre på variablen 'a' inde i det vil afspejle den oprindelige værdi af 'a'en uden for metoden også.

Der er nogle vigtige punkter, der skal huskes, når man beskæftiger sig med parametermodifieringsenhed "ref".

  • Argumentet, som du overfører til referencen til en metode, skal initialiseres inden den metode, der kalder.
  • Metoden må ikke tildele den oprindelige værdi til ref argumentet.
  • Du kan også bruge ref sammen med referencevariablen også.

Definition af ud søgeord

Hver gang du kalder en metode, vil den kun returnere en enkelt værdi. Hvis du vil have en metode til at returnere mere end en værdi ved et opkald, skal "ud" søgeordet bruges sammen med de parametre, som du vil vende tilbage, når metoden afsluttes. Nogle gange er det tilfældet, at når vi ikke ønsker at videregive noget til metoden, men vil have metoden til at vende tilbage noget, bruger vi parametere med et udeord. Lad os forstå det med et eksempel.

 bruger system; klasse DemoOut {public int Decompose (dobbelt x, ud dobbeltfraktion) {int whole_num; whole_num = (int) x; fraktion = x - hele_num; returnere whole_num; }} klasse Out_maint {static void Main () {DemoOut ob = ny DemoOut (); int jeg; dobbelt frac; i = ob.Dompompose (100.125, frafra); // brugt nøgleord Console.WriteLine ("Hele nummerdelen er" + i); Console.WriteLine ("fraktion del er" + frac); }} // output Heltallet er 100 Brøkdel er 0.125 

I ovenstående kode returneres to værdier ved hjælp af metoden Decompose (). Den vender tilbage med søgeordet "return" dvs. hele_numret, og det returnerer en parameter, der foregår uden for søgeordet, mens metoden kalder dvs. "frac".

De vigtige punkter at huske om ud søgeordet.

  • I modsætning til ref-søgeord må parameteren, der bruger søgeord, ikke initialiseres før metoden, der ringer.
  • Den kaldte metode vil selv tildele en værdi til parameteren med et ud søgeord, da det anses for ikke-tildelt inden for den kaldte metode, dvs. det antages at have ingen indledende værdi.
  • Den kaldte metode skal tildele en værdi til ud-parameteren, før metoden afslutter.
  • Ud-søgeordet gælder også for referencevariablen.

Nøgleforskelle mellem ref og ud i C #

  1. Når en variabel forud for ref-nøgleordet overføres til en hvilken som helst metode, afspejler de ændringer, der foretages i den inden for metoden, i sin oprindelige værdi. Når en variabel overføres til en metode, går det forud for søgeordet, at metoden returnerer det uden at bruge returord.
  2. Ref-parameteren skal initialiseres, inden den sendes til en metode. På den anden side skal udparameteren initialiseres inden for den metode, den sendes til.
  3. Mens du ringer, erklærer eller definerer en metode, er ref parameter udtrykkeligt angivet som ref. På den anden side, mens du ringer, erklærer eller definerer en metode, ud-parameter er udtrykkeligt erklæret som ude.

Konklusion:

Når variablen skal overføres ved henvisning til en metode, kan ref og ud-søgeordet bruges. Årsagen til at bruge begge søgeordene er forskellige, hvor ref-søgeordet kan bruges til at ændre værdien af ​​argumentet forud for ref-søgeord, overføres til den kaldte metode, og ud-søgeordet bruges til at returnere værdien af ​​argumentet forud for ved ud søgeordet.

Top