2016-07-12 20 views
0

Ich habe versucht, den Unterschied zwischen Call by Value und Call by Reference zu verstehen. Jemand erklärte mir, dass durch Bezugnahme der tatsächliche Speicherplatzwert geändert wird, während der Aufruf nach Wert nur die Instanz (virtueller Wert) ändert, aber nicht die tatsächliche. Also habe ich versucht, dieses Programm zu überprüfen, wie nach Wert und Referenz funktioniert. Mein Programm funktioniert nicht, Implementiere ich Logik richtig?Unterschied zwischen bestandenen Werten und Referenz

Hier ist die überarbeitete Version des gelösten und funktionierenden Codes.

static void Main(string[] args) 
    { 
     Program pro = new Program(); 
     int i = 1; 

     Console.WriteLine("Call By Value: "); 
     pro.byVal(i); 
     Console.WriteLine(i); 
     Console.ReadKey(); 

     Console.WriteLine("\n\n\nCall By Reference: "); 
     pro.byRef(ref i); 
     Console.WriteLine(i); 
     Console.ReadKey(); 
    } 

    public void byVal(int i)   //******* Call by Value *******// 
    { 
     i = 2; 
    } 
    public void byRef(ref int i)  //******* Call by Refrence *******//  
    { 
     i = 3; 
    } 
+0

kompiliert dieser Code wirklich? –

+0

Was meinen Sie mit "Mein Programm funktioniert nicht"? Was willst du erreichen? Bitte lesen Sie diesen Artikel: https://msdn.microsoft.com/en-us/library/0f66670z.aspx –

+0

Ja, es tut @MongZhu – smnizamani

Antwort

2

Sie müssen den Anruf

byRef(i); 

zu

byRef(ref i); 

ändern, wenn Sie es durch Verweis aufrufen möchten.

+0

Scharfes Auge dort ... – Rahul

+0

Problem gelöst! Danke :) – smnizamani