Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variable Scope in C#, Java

Tags:

java

scope

c#

oop

No, this is not my homework.
(Because there is a stack of answer sheets beside me, waiting to be marked.)

Q: If a local variable in a method has the same name as a variable in the main program, what will occur?
a) an error is generated
b) the variable in the main program is "hidden" until the method is finished executing
c) the variable in the main program will override the variable from the method
d) None of the above.

And the textbook answer is b, quite straightforward.

But on a second thought, is it really "hidden"?
As far as I know, in pure object-oriented languages like C# and Java,
we can always use

this.x

or

MainProgram.x

for static variables.

So my question is:
Can option b be considered true for C#? Why?

Please share your thoughts.

like image 395
user1348001 Avatar asked May 27 '26 14:05

user1348001


1 Answers

Yes, the local variable x hides (or more precisely, shadows - thanks to @pst) the member variable x within the scope of that method / block. You can refer to the latter with its qualified name as this.x, to make life easier, but nevertheless the answer is correct. A (fully) qualified name is not scope-dependent anymore so it can't be hidden or shadowed.

like image 141
Péter Török Avatar answered May 30 '26 06:05

Péter Török



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!