VB.NET doesn't have out
parameters, but you can specify <Out()> ByRef
on COM and P/Invoke methods to get the same effect for external methods.
Does specifying the same on internal methods (i.e. methods only called by .NET code) actually help the Jitter (or VB.NET compiler)? Or is it currently only useful as a programmer note.
Is it possible it could be used in a future Jitter, or is this attribute lost when compiling?
I've confirmed a VB.NET <Out()>
does cause a C# client to require out
arguments, so it does seem to be effectively the same.
Also a C# client passes in its arguments with current values into the method, but that's not surprising because, unlike the COM or P/Invoke cases, there's no marshalling to do. (And C# won't allow a property to be set by an out
argument directly, so there doesn't seem to be a way to see if C# would optimise away a previous unneeded assignment.)
So it seems the answer is it does help possible future C# clients use the code, and if the jitter ever adjusts the C# equivalent, it would do the same here. Though because languages like VB exist, it can't do much because they don't respect the Out
attribute themselves.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With