首页 > 学院 > 开发设计 > 正文

c#中变量的作用域

2019-11-17 03:14:00
字体:
来源:转载
供稿:网友

c#中变量的作用域

Posted on 2014-04-14 14:22 思思博士 阅读(...) 评论(...) 编辑 收藏

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);//相信未来(字段级的变量)        }    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表