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
Post a Comment