c# - What is the difference between 2 methods with ref object par and without? -


i wonder difference between following methods regards how object parameter referenced:

public void dosomething(object parameter){} 

and

public void dosomething(ref object parameter){} 

should use ref object parameter in cases want change reference object not override object in same reference?

public void dosomething(object parameter) {   parameter = new object(); // original object callee unaffected.  }  public void dosomething(ref object parameter) {   parameter = new object(); // original object new object  } 

see article: parameter passing in c# jon skeet

in c#, reference type object's address passed value, when ref keyword used original object can assigned new object or null, without ref keyword not possible.

consider following example:

class program {     static void main(string[] args)     {         object obj1 = new object();         obj1 = "something";          dosomething(obj1);         console.writeline(obj1);          dosomethingcreatenew(ref obj1);         console.writeline(obj1);          dosomethingassignnull(ref obj1);         console.writeline(obj1 == null);         console.readline();     }     public static void dosomething(object parameter)     {         parameter = new object(); // original object callee unaffected.      }      public static void dosomethingcreatenew(ref object parameter)     {         parameter = new object(); // original object new object      }      public static void dosomethingassignnull(ref object parameter)     {         parameter = null; // original object null      } } 

output be:

something system.object true 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -