I hope you agree with my explanation and example, btw.
But of course!
BTW, your presumption that the
"compiler assumes value is already initialized on call!!" is very funny.
Try not initializing the variable "a" to see how much the compiler "assumes" ... you're funny!
When you tell the compiler that a parameter is "out", you are telling the compiler that the parameter will be written to (assigning it to itself doesn't qualify as writing to it - it's a bit unusual to have to "clarify" this "mystifying" fact.)
"var" only tells the compiler to pass the variable by reference. It does not tell the compiler how the variable should be used (read or written.) It doesn't tell the compiler to "assume" anything.
Thank you for the entertainment.