官术网_书友最值得收藏!

  • 21天學通C#
  • 秦婧等編著
  • 1793字
  • 2018-12-29 13:23:25

2.2 變量和常量

變量是指在程序運行的過程中,值可以發生變化的量。常量是指在程序運行的過程中,值不會發生變化的量。在聲明常量時,需聲明程序中要用到的常量名稱并對它進行賦值。常量可以是任何一種值類型或引用類型。例如,圓周率PI就是一個常量,因為它的值是不變的。

2.2.1 命名變量

變量的命名要有意義,要能見名知其意。這樣能給代碼的維護和閱讀帶來極大的方便,也是讀者應該要練習和養成的良好編程習慣。除了以下這些規則以外,筆者推薦學習匈牙利命名法。關于該命名法,在本書7.3.3節中有介紹,讀者可以參考或提前學習。變量的命名規則如下:

· 變量名必須以字母開頭,名字中間只能由字母、數字和下畫線“_”組成;

· 變量名的長度不能超過255個字符;

· 變量名在有效的程序范圍內必須是唯一的;

· 變量名不能是保留字(關鍵字),但可以把保留字嵌入變量名。

例如:命名一個學生的名字StuName,這樣一眼就看出是學生名字的變量。

提示:C#語言對大小寫是很敏感的,這是.NET公共類型規范CTS中的特性。但是在VB.NET中不區分大小寫。VB.NET通過CLR編譯成中間語言后,系統自動做了類型轉換,是VB.NET的編譯環境自動完成的。所以從整個.NET平臺來看,是區分大小寫的。

在C#語言中,不能使用沒有初始化的變量。在C#語言的面向對象里,對象的成員變量由編譯器負責清零。而局部變量,則由程序員負責清零。

2.2.2 聲明和使用變量

在C#語言中,變量有很多種類型,可分為靜態變量、局部變量、實例變量、數組變量、值參數、引用參數、輸出參數7種。

通過“static”聲明的變量就是靜態變量。靜態變量在創建并被加載后即能生效。無論創建了多少個靜態變量,它都只會有一個副本。例如,聲明一個靜態變量static int i=1;。

注意:在聲明靜態變量時,最好為它賦值,這樣才是安全的。

局部變量就是只在局部作用域里發生作用的變量。它的生效范圍定義在它的代碼塊內。塊指的就是兩個大括號“{”“}”之間,在塊內可以是一條語句,也可以有多條或者空語句。局部變量從開始聲明的地方生效,當塊結束后,局部變量也消失了。

范例2-5】下面來演示局部變量的聲明和使用。在主函數中分別輸出變量名相同的變量值,但是兩個變量的作用范圍不同,它們只是局部發生作用,如示例代碼2-5所示。

示例代碼2-5

        01  using System;                          //包含基本類和基類
        02  ……                                    //還有其他命名空間,也是系統生成,在此省略
        03  namespace Ex_2_5                       //程序的命名空間,也是項目名稱,如Ex_2_5
        04  {
        05     class Program
        06     {
        07         static void Main(string[] args)  //主函數,也是入口函數
        08         {
        09            Program data = new Program();//創建對象,Program是一個類,在第4章中有
                                                  //介紹
        10            data.fnTest1();               //輸出fnTest1()中的i
        11            data.fnTest2();               //輸出fnTest2()中的i
        12            Console.ReadLine();           //獲取輸入焦點,為了看運行結果
        13         }
        14         public void fnTest1()            //公有函數fnTest1()
        15         {
        16            int i;                        //局部變量,它的作用范圍只在fnTest1()中
        17            i = 100;                      //必須先賦值才能使用
        18            Console.WriteLine(i);         //輸出fnTest1中的i
        19         }
        20         public void fnTest2()            //公有函數fnTest2()
        21         {
        22            int i;                        //此處的i作用范圍只在fnTest2()中
        23            i=200;                        //必須先賦值才能使用
        24            Console.WriteLine(i);         //輸出fnTest2中的i
        25         }
        26     }
        27  }

【運行結果】選擇“調試”|“啟動調試”選項運行程序,結果如圖2.8所示。

圖2.8 整數的聲明

【代碼解析】可以看出,在上述代碼中含有兩個同名的整型局部變量i。但是由于它們的作用域不同,所以互不影響。沒有“static”修飾的變量就是實例變量。當一個類被實例化以后,就生成了屬于該類的實例變量。當執行了類的析構函數后,它生成的實例變量就會失效。

注意:在C#中,局部變量必須先賦值,然后才能使用。

2.2.3 聲明和使用常量

在C#中定義常量的方式有兩種:一種叫做靜態常量(Compile-time constant),另一種叫做動態常量(Runtime constant)。前者用“const”來定義,后者用“readonly”來定義。兩者之間的區別如表2.2所示。

表2.2 靜態常量和動態常量的區別和聯系

1.靜態常量的使用

用const關鍵字來聲明靜態常量。例如聲明一個公有的靜態常量MAX并賦值public const int MAX=10;靜態常量在聲明時必須賦值。但是用const來聲明常量時,在類型上有很多限制。首先,要聲明的類型必須屬于值類型,然后,聲明的類型初始化不能通過new來完成。因此,一些用struct聲明的值類型常量也不能用const來聲明。

2.動態常量的使用

相對于const關鍵字而言,使用readonly來聲明動態常量則要靈活得多。如聲明一個公有的動態常量MAX并賦值public readonly int MAX=10;系統會為readonly所聲明的常量分配內存空間,就像類的其他成員一樣擁有獨立的空間。此外,readonly所聲明的常量除了在聲明時可以賦值外,還可以在類的構造函數中進行賦值。由于readonly所聲明的常量相當于類的成員,因此使用readonly不像const關鍵字那樣有類型限制,可以用readonly去聲明任何類型的常量。

注意:在程序設計中,一般常量都用大寫字母來表示,例如圓周率PI在程序中定義為常量時就寫成PI。

主站蜘蛛池模板: 鱼台县| 正安县| 宁安市| 吉林省| 融水| 阜康市| 浦东新区| 都兰县| 盐源县| 麻阳| 麦盖提县| 哈巴河县| 济南市| 尤溪县| 黄浦区| 青浦区| 凭祥市| 辰溪县| 天长市| 南木林县| 如皋市| 沙湾县| 崇阳县| 文水县| 醴陵市| 石景山区| 大竹县| 华阴市| 新河县| 广元市| 体育| 沛县| 民县| 五华县| 子长县| 灵宝市| 宜州市| 吐鲁番市| 黄大仙区| 界首市| 新巴尔虎右旗|