C#关于作用域与命名空间的问题

RT,输入以下代码后:{classabc{publicintage;publicvoidF(){age=18;}publicvoidG(){intage;age=21;}... RT,输入以下代码后:
{
class abc
{
public int age;
public void F()
{
age = 18;
}
public void G()
{
int age;
age = 21;
}
}
class Program
{
static void Main(string[] args)
{
abc a = new abc();
Console.WriteLine(a.age);
a.F();
Console.WriteLine(a.age);
a.G();
Console.WriteLine(a.age);
Console.ReadKey();
}
}
}
我觉得应该会输出:
0
18
21
但是编译后生成的是:
0
18
18
求问这是什么原因?本人c#新手求解释!
展开
 我来答
刷新①丅5e6
2015-06-29 · TA获得超过4333个赞
知道大有可为答主
回答量:1499
采纳率:64%
帮助的人:604万
展开全部
a.G()改变的是局部变量age,这个age和类的成员变量age是两个不同的变量,他们在内存的位置也完全不一样。Console.WriteLine(a.age);打印的是类的成员变量,自然也是18。
追问
那如何打印G()的局部变量呢?
追答

那你需要改造你的代码

        public int G()
        {
            int age;
            age = 21;
            return age;
        }


然后打印的时候:

Console.WriteLine(a.G())
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式