Rekommenderas, 2024

Redaktionen

Skillnad mellan ref och ut i C #

"Ref" och "Out" är parametermodifierare som används i C #. Med hjälp av ref och ut kan du överföra valfri typ med hänvisning till vilken metod som helst. Anledningen till att man överför vilken värde som helst med referens introducerar huvudskillnaden mellan ref och ut nyckelord. Ref- sökordet tillåter den uppringda metoden att ändra innehållet i argumentet som skickas till det med ref-nyckelord. Ut sökordet tillåter uppringad metod att returnera mer än ett värde vid ett enda samtal. Låt oss studera skillnaden mellan ref och ut tillsammans med ett jämförelsestabell.

Jämförelsediagram

Grunder för jämförelseRefUt
GrundläggandeDet gör att förändringen i värdet av argumentet fortsätter med ref nyckelord.Det tillåter en metod att returnera de värden som föregås av ett ut nyckelord.
initieringRef-parametern måste initialiseras före metodanropet.Ut parametern måste initialiseras inom den uppringda metoden innan den avslutas.
DeklarationParametern som ska ändras med en metod deklareras som ref medan metoddeklaration och metodkallning.Parametern som ska returneras måste deklareras som ref medan metoddeklaration och metodanrop.

Definition av Ref Keyword

"Ref" är en parametermodifierare som används när det är nödvändigt att ringa en metod med call-by-reference. När vi vill att de ändringar som gjorts till argumenten inom en uppkallad metod måste reflektera i det ursprungliga värdet av den variabeln, används ref-parametermodifieraren. Värdetypen som vi vill förklara som referens föregås av "ref" -sökordet under metoddeklaration och metodanrop. Mer än en parameter kan deklareras som en "ref" när man ringer och förklarar en metod.

 använder system; klass DemoRef {public void Square (ref int s) {s = s * s; }} klass Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("ett före metodsamtal:" + a); ob.Square (ref a); // Används ref Keyword Console.WriteLine ("ett efterrop:" + a); }} // mata ut ett samtal före samtalet: 10 a efter metodanrop: 100 

I ovanstående kod överförs variabeln 'a' som ett argument till metoden Square (ref a) tillsammans med parametern modifier ref som är kopplad till den. Det betyder vad som ändrar metoden Square (ref a) kommer att utföra på variabeln 'a' inuti den kommer att reflektera i originalvärdet av 'a', utanför metoden också.

Det finns några viktiga punkter som måste komma ihåg när man arbetar med parametermodifierare "ref".

  • Argumentet som du skickar av referenten till en metod måste initieras före den metod som ringer.
  • Metoden får inte tilldela initialvärdet till refargumentet.
  • Du kan också använda ref tillsammans med referensvariabeln också.

Definition av ut nyckelord

Varje gång du ringer en metod, kommer det bara att returnera ett enda värde. Om du vill att en metod ska returnera mer än ett värde vid ett samtal måste "ut" -ordet användas tillsammans med parametrarna som du vill återvända när metoden avslutas. Ibland är det så att när vi inte vill skicka något till metoden men vill att metoden ska återvända till något använder vi parametrar med ett ut nyckelord. Låt oss förstå det med ett exempel.

 använder system; klass DemoOut {public int Decompose (dubbel x, ut dubbel fraktion) {int whole_num; whole_num = (int) x; fraktion = x - whole_num; returnera whole_num; }} klass Out_maint {static void Main () {DemoOut ob = new DemoOut (); int jag; dubbel frac; i = ob.Decompose (100.125, out frac); // använt sökordet Console.WriteLine ("Hela nummerdelen är" + i); Console.WriteLine ("fraktionsdel är" + frac); }} // output Heltaldelen är 100 Bråkdel är 0.125 

I ovanstående kod returneras två värden av metoden Decompose (). En återkommer med sökordet "return" dvs whole_num och andra returnerar en parameter som föregås av sökordet medan metoden kallar "frac".

De viktiga punkterna att komma ihåg om ut sökordet.

  • Till skillnad från ref-nyckelordet måste parametern som använder sökordet inte initialiseras före metoden som ringer.
  • Den uppringda metoden kommer själv att tilldela ett värde till parametern med ett ut sökord eftersom det anses vara otilldelat inom den uppringda metoden, dvs det antas inte ha något initialt värde.
  • Den uppringda metoden måste tilldela ett värde till ut parametern innan metoden avslutas.
  • Ut sökordet är också tillämpligt på referensvariabeln.

Viktiga skillnader mellan Ref och Out i C #

  1. När en variabel föregås av ref-nyckelordet överförs till vilken metod som helst, reflekterar de ändringar som gjorts i den inom metoden i sitt ursprungliga värde. När en variabel som passerat till en metod föregås av sökordet returnerar metoden det utan att använda returord.
  2. Ref-parametern bör initialiseras innan den överförs till en metod. Å andra sidan måste utgångsparametern initieras inuti den metod som den överförs till.
  3. Medan man ringer, förklarar eller definierar en metod, anges ref-parameteren uttryckligen som ref. Å andra sidan, när du ringer, förklarar eller definierar en metod, är ut parametern uttryckligen deklarerad.

Slutsats:

När variabeln ska överföras med hänvisningen till en metod kan ref och ut nyckelordet användas. Orsaken att använda båda sökorden är annorlunda där ref-nyckelordet kan användas för att ändra värdet av argumentet som föregås av ref-nyckelord, skickas till den uppringda metoden och ut sökordet används för att återvända tillbaka värdet av argumentet föregås av ut sökordet.

Top