C# - Ref type comparison to pointers confusion? -


i reading jeffrey richters clr via c#, , in says ref parameters reference passed value. makes sense me , seems analagous pointers.

i.e. in c if pass pointer function , assign pointer via malloc changes pointer point new memory location, know since pointer copy doesn't reassign original pointer passed function. in order accomplish change pointer outside function have use double pointer.

however, in c#:

void swap(ref object a, ref object b) {     object t = b;     b = a;     =t ; } 

works. indicates me references aren't value. in analogy malloc above, assuming pass object reference , assign new object , reassignment persist outside function.

can clearup confusion?

without ref keyword, object's reference passed value.

with ref keyword, reference object's reference passed value.

[it's compiler hiding fact making assignment parameter passed explicit ref changing pointer]


Comments