不,这不是我的作业。
(因为我身边有一叠答题纸,等着批改。)
问:如果方法中的局部变量与主程序中的变量同名,会出现什么情况?
a) 产生错误
b) 主程序中的变量是“隐藏”的,直到方法执行完毕
c) 主程序中的变量将覆盖方法中的变量
d) 以上都不是。
而教科书的答案是 b,非常简单。
但转念一想,它真的“隐藏”了吗?
据我所知,在 C# 和 Java 这样的纯面向对象语言中,
我们总是可以使用
this.x
或
MainProgram.x
对于静态变量。
所以我的问题是:
对于 C#,选项 b 可以被认为是正确的吗?为什么?
请分享您的想法。
最佳答案
是的,局部变量 x
隐藏(或者更准确地说,阴影 - 感谢@pst)范围内的成员变量 x
该方法/ block 。您可以将后者的 限定名称 称为 this.x
,以使生活更轻松,但答案仍然是正确的。 (完全)限定名称不再依赖于范围,因此无法隐藏或隐藏。
关于c# - C#、Java 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257449/