De uit is een trefwoord in C# dat wordt gebruikt voor het doorgeven van de argumenten aan methoden als referentietype. Het wordt over het algemeen gebruikt wanneer een methode meerdere waarden retourneert.
Belangrijke punten:
- Het is vergelijkbaar met ref-trefwoord. Maar de belangrijkste verschil tussen ref en uit trefwoord is dat ref vereist dat de variabele wordt geïnitialiseerd voordat deze wordt doorgegeven aan de methode. Maar voor de out-parameter hoeven de variabelen niet te worden geïnitialiseerd voordat deze aan de methode worden doorgegeven. Maar voordat deze een waarde retourneert aan de aanroepende methode, moet de variabele worden geïnitialiseerd in de aangeroepen methode.
- Het is ook vergelijkbaar met het trefwoord in, maar de in trefwoord staat niet toe dat de methode die heeft aangeroepen de argumentwaarde wijzigt, maar ref staat toe.
- Voor gebruik uit trefwoord als parameter moeten zowel de methodedefinitie als de aanroepende methode de uit trefwoord expliciet.
- De out-parameters mogen niet worden gebruikt in asynchrone methoden.
- De out-parameters mogen niet worden gebruikt in iteratormethoden.
- Er kan meer dan één out-parameter in een methode voorkomen.
- Op het moment dat de methode wordt aangeroepen, kan de parameter out inline worden gedeclareerd. Maar de inline out-parameters zijn toegankelijk in hetzelfde codeblok als waar het aanroept.
- Overbelasting van de methode kan ook worden gedaan met behulp van parameters.
- Eigenschappen kunnen niet als uitgangsparameters worden doorgegeven, aangezien dit geen variabelen zijn.
- Tot C# 6.0 declareert een gebruiker eerst de variabele, waarna deze alleen als out-argument kan worden doorgegeven. Maar vanaf C# 7.0 kan de gebruiker, met uitzondering van een afzonderlijke variabelendeclaratie, ook de out-variabele declareren in de argumentenlijst van de methodeaanroep.
Verklaring van out-parameter:
// No need to initialize // the variable here data_type variable_name; Method_Name(out variable_name); // you can also convert both above two // lines of codes as follows from // C# 7.0 onwards Method_Name(out data_type variable_name);>
Hier de waarde van variabele_naam moet worden geïnitialiseerd in de aangeroepen methode voordat deze een waarde retourneert.
Voorbeeld:
C#
// C# program to illustrate the> // concept of out parameter> using> System;> class> GFG {> > // Main method> > static> public> void> Main()> > {> > // Declaring variable> > // without assigning value> > int> i;> > // Pass variable i to the method> > // using out keyword> > Addition(> out> i);> > // Display the value i> > Console.WriteLine(> 'The addition of the value is: {0}'> , i);> > }> > // Method in which out parameter is passed> > // and this method returns the value of> > // the passed parameter> > public> static> void> Addition(> out> int> i)> > {> > i = 30;> > i += i;> > }> }> |
>
>Uitgang:
The addition of the value is: 60>
Meerdere uitgangsparameters: In C# mag een gebruiker meerdere parameters doorgeven aan de methode en retourneert de methode meerdere waarden.
Voorbeeld: In de onderstaande code hebben we twee waardevariabelen gedeclareerd zonder te initialiseren, d.w.z. int i, j;. Nu geven we deze parameters door aan de Addition-methode met behulp van het trefwoord out Addition(out i, out j);. De waarde van deze variabelen wordt toegewezen in de methode waarin ze zijn doorgegeven.
C#
probeer catchblock eens in java
// C# program to illustrate the> // concept of multiple out parameter> using> System;> class> GFG {> > // Main method> > static> public> void> Main()> > {> > // Declaring variables> > // without assigning values> > int> i, j;> > // Pass multiple variable to> > // the method using out keyword> > Addition(> out> i,> out> j);> > // Display the value i and j> > Console.WriteLine(> 'The addition of the value is: {0}'> , i);> > Console.WriteLine(> 'The addition of the value is: {0}'> , j);> > }> > // Method in which out parameters> > // are passed and this method returns> > // the values of the passed parameters> > public> static> void> Addition(> out> int> p,> out> int> q)> > {> > p = 30;> > q = 40;> > p += p;> > q += q;> > }> }> |
>
>Uitgang:
The addition of the value is: 60 The addition of the value is: 80>
Verbetering van de Out-parameter in C# 7.0: In C# 7.0 zijn er enkele nieuwe functies toegevoegd aan de out-parameter en de functies zijn:
- In C# 7.0 kan de parameter out worden doorgegeven zonder de declaratie en initialisatie ervan, ook wel de Inline-declaratie van Out-parameter of impliciet Typ parameter uit . De reikwijdte ervan is beperkt tot de hoofdtekst van de methode, d.w.z. de lokale reikwijdte.
- De parameter out mag worden gebruikt was typ de methodeparameterlijst in.
- In out-parameter is het niet verplicht dat de naam van de out-parameter hetzelfde is in zowel de definitie als de oproep.
- Het kan ook worden gebruikt in Try Pattern.
Voorbeeld: Onderstaande programma's demonstreren de inline-declaratie van de Out-parameter. Hier de coderegel, d.w.z. Area(out int lengte, uit int breedte, uit int Rarea); bevat de inline-declaratie van de Out-parameter, aangezien deze variabelen rechtstreeks binnen de methode-aanroep worden gedeclareerd. De waarde van de variabelen wordt geïnitialiseerd in de methode waarin ze zijn doorgegeven.
Opmerking: U hebt versie C# 7.0 nodig om dit voorbeeld uit te voeren.
Voorbeeld:
tekenreeks in int
C#
// C# program to illustrate the> // concept of out parameter> using> System;> class> GFG> {> > // Main method> > static> public> void> Main()> > {> > // In-line declaring variables> > // without assigning values> > // Passing multiple variable to> > // the method using out keyword> > Area(> out> int> length,> out> int> width,> out> int> Rarea);> > // Display the value length, width, and Rarea> > System.Console.WriteLine(> 'Length of the rectangle is: '> + length);> > System.Console.WriteLine(> 'Width of the rectangle is: '> + width);> > System.Console.WriteLine(> 'Area of the rectangle is: '> + Rarea);> > Console.ReadLine();> > }> > // Method in which out parameters are passed> > // and this method returns the values of> > // the passed parameters> > public> static> void> Area(> out> int> p,> out> int> q,> out> int> Rarea)> > {> > p = 30;> > q = 40;> > Rarea = p * q;> > }> }> |
>
>
Uitgang:
Length of the rectangle is : 30 Width of the rectangle is : 40 Area of the rectangle is : 1200>