Not sure about C#, but in VB.Net you can simply pass in a constant to an output (byref) parameter. So if you have an integer, as an output parameter, you don't have to pass in an actual variable, you can just pass in 0, or any other valid integer. For Objects, including strings you can just pass in Nothing (Null in C#) and everything works fine. I'm not sure where the variable is stored, probably just on the stack as in any other parameter you pass in, and it disappears when the function exits.