Explicitly saying ref or out when invoking a function

Jeremie Pelletier jeremiep at gmail.com
Tue Aug 11 13:42:52 PDT 2009


Ary Borenszweig Wrote:

> In C# when you define a function that takes an out or ref parameter, 
> when invoking that function you must also specify ref or out. For example:
> 
> void fun(ref uint x, double y);
> 
> uint a = 1;
> double b = 2;
> fun(ref a, b);
> 
> When I first started using C# it really annoyed me that I had to put 
> that keyword there just to get my program compiled. "I know what I'm 
> doing", I thought. But later, when reading the code, I found it very 
> helpful to know that my "a" could be changed when invoking "fun". As 
> always, code is read much more times than written, and I think this 
> little tips help better understand the code.
> 
> What do you think?

I think it's overkill, and it still doesn't say if the ref is const or mutable. Much like in C/C++ when you pass a pointer you dont know if its a const or mutable parameter unless you look at the function declaration.

It's especially bad since if you modify the function prototype and change ref, you have all your calls to update too.



More information about the Digitalmars-d mailing list