c# - C#、Java 中的变量作用域

标签 c# java oop scope

不,这不是我的作业。
(因为我身边有一叠答题纸,等着批改。)

问:如果方法中的局部变量与主程序中的变量同名,会出现什么情况?
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/

相关文章:

c# - XAML - Windows Phone 8,使用 Pivot Control 缓慢加载

c# - Scrollviewer 正在自行向下滚动

java - 在 Spring Boot 应用程序中从 mongo db 获取数据,其中要获取的集合名称和字段在运行时已知

java - 使用jpql查找包含给定集合的所有元素的集合的项目

javascript - 面向对象的 JavaScript 最佳实践问题 : How should I configure my objects for the following

oop - 根据数学群论设计对象好不好

c# - 由于 Web API 中的特殊字符,未设置发布值

c# - 随机调用不存在的 style.css 操作 - 为什么?

java - Idea Intellij : Dependency org. json :json:20180813 not found,无法在maven中导入org.json库

c++ - 在同一个函数中使用不同的命名空间