黑马程序员技术交流社区

标题: 变量作用域问题 [打印本页]

作者: 胡元江    时间: 2013-2-25 16:56
标题: 变量作用域问题
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);
    }

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

作者: xiaoxiang_04    时间: 2013-2-25 17:04
Program.k因为都属于class program 所以都可以访问
MyConsole.k没加public,所以static void Main(string[] args)访问不了,加个public就行了
作者: 岳珅    时间: 2013-2-25 17:10
20//这个不用说- -

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

20//这个也不用说- -

10//program类中的k啊。。。
作者: dbqwaii    时间: 2013-2-25 21:57
   class MyConsole   是内部类  所以 想要访问里边的静态字段 在静态字段前边加上public
        {
          public static int k = 25;
        }
输出的时候 就是
20
25
20
10




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2