Aanbevolen, 2024

Editor'S Choice

Verschil tussen ref en out in C #

"Ref" en "Out" zijn de parameter-modifiers die in C # worden gebruikt. Met behulp van ref en out kun je elk waardetype doorgeven door te verwijzen naar elke methode. De reden om een ​​waardetype door de verwijzing door te geven, introduceert het grootste verschil tussen het zoekwoord en het uitzoekwoord. Met het trefwoord ref kan de methode called de inhoud van het argument wijzigen dat eraan is doorgegeven met het trefwoord ref. Met het trefwoord out kunt u methode gebruiken om meer dan één waarde in één keer terug te sturen. Laten we het verschil tussen ref en out samen met een vergelijkingsgrafiek bestuderen.

Vergelijkingstabel

Basis voor vergelijkingRefUit
basis-Hiermee kan de wijziging in de waarde van het argument worden uitgevoerd met het trefwoord ref.Het staat een methode toe om die waarden te retourneren die worden voorafgegaan door een uit-sleutelwoord.
initialisatieDe parameter ref moet vóór de aanroep van de methode worden geïnitialiseerd.De parameter out moet worden geïnitialiseerd binnen de methode genaamd voordat deze wordt beëindigd.
VerklaringDe parameter die door een methode moet worden gewijzigd, wordt gedeclareerd als ref, terwijl de methode-declaratie en methode-aanroep wordt uitgevoerd.De terug te sturen parameter moet worden gedeclareerd als ref, terwijl methode-declaratie en methode aanroepen.

Definitie van Ref Keyword

De "ref" is een parameter-modifier die wordt gebruikt wanneer het nodig is om een ​​call-by-referentie-methode aan te roepen. Wanneer we willen dat de wijzigingen die in de argumenten in een geroepen methode zijn aangebracht, in de oorspronkelijke waarde van die variabele moeten weerspiegelen, wordt de parameterwijziging van ref gebruikt. Het waardetype dat we als ref willen declareren, wordt voorafgegaan door het sleutelwoord "ref" tijdens de methode-declaratie en methode-aanroep. Meer dan één parameter kan worden gedeclareerd als een "ref" tijdens het aanroepen en declareren van een methode.

 systeem gebruiken; class DemoRef {public void Square (ref int s) {s = s * s; }} class Ref_main {static void Main () {DemoRef ob = nieuwe DemoRef (); int a = 10; Console.WriteLine ("a before method call:" + a); ob.Square (ref a); // Used ref Keyword Console.WriteLine ("a after call:" + a); }} // output a before method call: 10 a after method call: 100 

In de bovenstaande code wordt de variabele 'a' doorgegeven aan de methode Square (ref a) samen met de parameter modifier ref eraan gekoppeld. Het betekent dat alles wat de methode Square (ref a) zal veranderen op de variabele 'a' erin zal reflecteren in de originele waarde van de 'a', ook buiten de methode.

Er zijn enkele belangrijke punten die onthouden moeten worden bij het omgaan met parameter modifier "ref".

  • Het argument dat u doorgeeft aan de verwijzing naar een methode moet worden geïnitialiseerd voordat de methode wordt aangeroepen.
  • De methode mag de beginwaarde niet aan het ref-argument toewijzen.
  • Je kunt ook ref samen met de referentievariabele gebruiken.

Definitie van Out Keyword

Elke keer dat u een methode aanroept, wordt slechts één waarde geretourneerd. Als u wilt dat een methode meer dan één waarde retourneert bij een oproep, moet het sleutelwoord "uit" worden gebruikt, samen met de parameters die u wilt retourneren wanneer de methode wordt beëindigd. Soms is het zo dat wanneer we niets willen doorgeven aan de methode, maar willen dat de methode iets retourneert, we parameters gebruiken met een uit-sleutelwoord. Laten we het begrijpen met een voorbeeld.

 systeem gebruiken; class DemoOut {public int Decompose (double x, out double fraction) {int whole_num; whole_num = (int) x; fraction = x - whole_num; return geheel_num; }} class Out_maint {static void Main () {DemoOut ob = nieuwe DemoOut (); int i; dubbele frac; i = ob.Decompose (100.125, uit frac); // used-outwoord Console.WriteLine ("Gehele onderdeel is" + i); Console.WriteLine ("fractiedeel is" + frac); }} // output Geheel getal is 100 Het fractionele gedeelte is 0.125 

In de bovenstaande code worden twee waarden geretourneerd door de methode Decompose (). Een daarvan retourneert met het sleutelwoord "return", dwz geheel getal, en bij andere retourneert het een parameter die wordt voorafgegaan door het trefwoord out terwijl de methode called, dwz "frac".

De belangrijke punten om te onthouden over het uit-sleutelwoord.

  • In tegenstelling tot het trefwoord ref, mag de parameter met het sleutelwoord niet worden geïnitialiseerd voordat de methode wordt aangeroepen.
  • De aangeroepen methode zal zelf een waarde aan de parameter toewijzen met een uit-sleutelwoord, aangezien dit wordt beschouwd als niet-toegewezen in de aangeroepen methode, dwz er wordt verondersteld dat het geen initiële waarde heeft.
  • De aangeroepen methode moet een waarde toewijzen aan de parameter out voordat de methode wordt beëindigd.
  • Het uit-sleutelwoord is ook van toepassing op de referentievariabele.

Belangrijkste verschillen tussen Ref en Out in C #

  1. Wanneer een variabele voorafgegaan door het trefwoord ref wordt doorgegeven aan een methode, worden de wijzigingen die in de methode zijn aangebracht weerspiegeld in de oorspronkelijke waarde. Wanneer een variabele die aan een methode wordt doorgegeven wordt voorafgegaan door uit sleutelwoord geeft de methode het terug zonder terugkeerwoord te gebruiken.
  2. De parameter ref moet worden geïnitialiseerd voordat deze aan een methode wordt doorgegeven. Aan de andere kant moet de parameter out worden geïnitialiseerd binnen de methode waaraan deze wordt doorgegeven.
  3. Bij het aanroepen, declareren of definiëren van een methode wordt parameter ref expliciet als ref verklaard. Aan de andere kant, tijdens het aanroepen, declareren of definiëren van een methode wordt de parameter expliciet opgegeven als uit.

Conclusie:

Wanneer de variabele door de verwijzing naar een methode moet worden doorgegeven, kan het trefwoord ref en out worden gebruikt. Terwijl de reden voor het gebruik van beide sleutelwoorden anders is, waarbij het trefwoord ref kan worden gebruikt om de waarde van het argument voorafgegaan door het trefwoord ref te wijzigen, doorgegeven aan de methode called en het trefwoord out wordt gebruikt om de waarde van het argument terug te geven dat is voorafgegaan door het uit sleutelwoord.

Top