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);//相信未來(字段級的變量)

        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM