c#中变量的作用域

C#中的作用域和javascript中的作用域还是有区别的.呵呵

class Person
    {
        /*
         *确定C#变量作用域的2个规则.
        1.类的字段所处的作用域等同于该字段所属类所在的作用域;
         * 2.局部变量的作用域仅限于声明它的方法的或循环体内部,以大括号{}为界.
         */
        public string MyVar;//作用域和它所属的类的作用域相同

        public void DoSomething()
        {
            //someVar变量作用域仅限在DoSomething()方法内部,以{}为届
            var someVar = "some value";
            int[] someVars = { 1, 2, 3, 5 };

            foreach (var item in someVars)
            {
                Console.WriteLine(item);
            }
            //这里将无法访问foreach循环体内部定义的item变量,编译器会报错
            //Console.WriteLine(item);

            /*
             OtherPerson的myString字段的作用域与OtherPerson对象的作用域相同.
             */
            OtherPerson oPer = new OtherPerson();
            oPer.myString = "思思博士";
        }
    }
    class OtherPerson
    {
        public string myString;
    }
    /*
     关于变量作用域冲突的现象.
     * 1.同一个作用域内,存在两个同名的变量,这里不关心变量的类型是否相同.如果存在这种情况,编译器将会报错,编译将无法继续.
     * 2.局部变量和字段变量同名,那么局部变量会将同名的字段级变量隐藏,就是说在局部变量的作用域内,局部变量的值覆盖了字段级变量的值.
     */
    class Human
    {
        public string myVar = "相信未来";
        public void DoSomthing()
        {
            var myVar = "我相信,我就是我,我相信明天";
            int[] someVars={1,2,3,5,8};
            foreach (var item in someVars)
            {
                //这个地方声明的item会报错.
                //string item = "和循环重的作用域冲突!";
                Console.WriteLine(item);
            }
            Console.WriteLine(myVar);//我相信,我就是我,我相信明天(局部变量)
            Console.WriteLine(this.myVar);//相信未来(字段级的变量)

        }
    }
原文地址:https://www.cnblogs.com/guoyansi19900907/p/3663975.html