A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡元江 中级黑马   /  2013-2-25 16:56  /  1358 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Program
    {
        static int k=10;
      class MyConsole
        {
          static int k = 25;  
        }
    static void Main(string[] args)
    {
        int k = 20;
        Console.WriteLine(k);
        Console.WriteLine(MyConsole.k  );
        Console.WriteLine(k);
        Console.WriteLine(Program.k);
    }

//请教下作用域的问题我都糊涂了。这几天越来越糊了有没有哪位没经过调试知道结果的。并说明下你是怎么看出来的原因。  再次申明不准调试  中间有几处错误

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

3 个回复

倒序浏览
Program.k因为都属于class program 所以都可以访问
MyConsole.k没加public,所以static void Main(string[] args)访问不了,加个public就行了

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
20//这个不用说- -

第二个。。。看你怎么改了。。//这里应该会报错吧- -类中的变量不加访问修饰符的话,默认是private的,主函数中应该是不能访问的。
这里要说一下,如果你要在声明变量前面加上public,然后就是MyConsole类中的k,输出的值会是25。
如果class MyConsole这里改成class MyConsole:Program,继承自Program,那么输出的值会是10

20//这个也不用说- -

10//program类中的k啊。。。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
   class MyConsole   是内部类  所以 想要访问里边的静态字段 在静态字段前边加上public
        {
          public static int k = 25;
        }
输出的时候 就是
20
25
20
10

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马