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

第4章 變量與常量

本章視頻教學(xué)錄像:23分鐘

通過第3章的學(xué)習(xí),我們對C#的數(shù)據(jù)類型及類型轉(zhuǎn)換有了簡單的了解。每一門語言都有各自的變量和常量的命名與使用規(guī)則,本章主要介紹常量與變量的相關(guān)內(nèi)容。

本章要點(diǎn)(已掌握的在方框中打鉤)

□ 變量

□ 匿名變量

□ 常量

4.1變量

本節(jié)視頻教學(xué)錄像:6分鐘

變量是編程語言中最基本的元素。變量是一個名稱,表示程序執(zhí)行時(shí)存儲在內(nèi)存中的數(shù)據(jù)。當(dāng)需要訪問存儲在變量中的信息時(shí),只需要使用變量的名稱即可。

4.1.1變量的命名

C#是一種對大小寫敏感的語言,變量命名需要遵循如下規(guī)則。

(1) 變量名必須以字母或下畫線開頭,只能由字母(大寫和小寫)、數(shù)字和下畫線組成。

(2) 變量名不能包含空格、標(biāo)點(diǎn)符號、運(yùn)算符字符。

(3) 變量名不能與C#中的關(guān)鍵字、運(yùn)算符或函數(shù)名同名。

(4) 使用多個單詞組合為變量名時(shí),使用駱駝命名法(camelCase),即第1個單詞的首字母小寫,其他單詞的首字母大寫。

注意

C#不能用關(guān)鍵字做變量名,但C#允許在關(guān)鍵字的前面加上前綴“@”作為變量的名字,如@using是合法的變量名。引入“@”的目的在于與其他語言進(jìn)行交互時(shí)避免沖突。建議盡量不要使用前綴“@”作為變量名的一部分。

下面給出一些合法與不合法的變量名例子。

    2a                 //不合法,以數(shù)字開頭
    number.1           //不合法,含有非法字符'.'
    numberOne          //合法
    break              //不合法,break為關(guān)鍵字
    mod                //不合法,mod為運(yùn)算符
    Main               //不合法,Main為函數(shù)
    intAge             //合法,使用駱駝命名法

4.1.2變量的聲明和賦值

變量的聲明語法如下。

[訪問修飾符] [變量修飾符] 變量的數(shù)據(jù)類型 變量名

其中訪問修飾符和變量修飾符可以省略,這將在9.2節(jié)中介紹。變量聲明和賦值如下所示。

    01  private  int  x;         //聲明x為整型變量,private可以省略
    02  x=10;                    //變量的賦值,讓變量x的值為10
    03  string  name="John";     //聲明一個字符串變量name,值為John

也可以在聲明變量的同時(shí)賦值,如:

    int  x=10;

也可以在一行聲明多個變量,如:

    int x=3,y=8; //不同變量之間用逗號隔開

4.1.3 隱式類型的局部變量

隱式類型的局部變量又叫匿名變量,是C# 3.0版本中引入的一個新用法,使用關(guān)鍵字var來聲明。可以用var聲明任何類型的局部變量,它只是負(fù)責(zé)告訴編譯器,該變量需要根據(jù)初始化表達(dá)式來推斷變量的類型,而且只能是局部變量。

語法如下。

    var  變量名稱=變量值;

例如,

    01  var i=8;               //定義局部變量i,i作為整型數(shù)據(jù)被編譯
    02  var s="Hello C#!";     //定義局部變量s,s作為字符串?dāng)?shù)據(jù)被編譯

4.2常量

本節(jié)視頻教學(xué)錄像:12分鐘

常量就是在程序運(yùn)行過程中值保持不變的量,即在程序執(zhí)行期間,常量的值不會發(fā)生改變。可以在代碼的任何位置用常量代替實(shí)際值。如定義const PI=3.14159265,這里使用PI來代替數(shù)值3.14159265。常量聲明時(shí)需要包含常量的名稱和常量的值,其格式如下。

    [訪問修飾符號]  const  類型  常量表達(dá)式;

其中“訪問修飾符號”可以省略。常量的修飾符可以是new、public、protected、internal、private等。常量的表達(dá)式表示常量的名字。如下所示。

    public  const  int  x=3,  y=8;//定義int型常量x和y,其值分別是3和8

可以在一行聲明多個常量。不過如果每行只聲明一個常量,代碼會更具有可讀性。

【范例4-1】 定義常量和變量,熟悉常量、變量的使用。

⑴ 在VisualStudio 2013中新建C#控制臺程序,項(xiàng)目名為“ConsVarDemo”。

⑵ 在Program.cs的Main方法中輸入以下代碼(代碼4-1.txt)。

        01  const  int  months=12;  //定義常量months
        02  const  int  weeks=52;   //定義常量weeks
        03  const  int  days=365;   //定義常量days
        04  //可以使用定義過的常量聲明新的常量
        05  const  double  daysPerWeek=(double)days/(double)weeks;        //定義常量daysPerWeek
    06  const   double  daysPerMonth=(double)days/(double)months;       //定義常量daysPerMonth
    07  string  name="Tom";                               //定義變量name
    08  int  annualSalary=500000;                         //定義變量annualSalary
    09  loat  monthSalary=annualSalary/months;            //定義變量monthSalary
    10  float  weekSalary=annualSalary/weeks;              //定義變量weekSalary
    11  float  daySalary=annualSalary/days;                //定義變量daySalary
    12  Console.WriteLine("常量變量演示結(jié)果:");          //輸出常量和變量的值
    13  Console.WriteLine("double型常量daysPerWeek的值是:{0}",daysPerWeek);
    14  Console.WriteLine("double型常量daysPerMonth的值是:{0}",daysPerMonth);
    15  Console.WriteLine("float型變量monthSalary的值是:{0}",monthSalary);
    16  Console.WriteLine("{0}的年薪是:{1}元",name,annualSalary);
    17  Console.WriteLine("{0}的月薪是:{1}元",name,monthSalary);
    18  Console.WriteLine("{0}的周薪是:{1}元",name,weekSalary);
    19  Console.WriteLine("{0}的日薪是:{1}元",name,daySalary);
    20  Console.ReadKey();                                //暫停程序的運(yùn)行直到輸入任意鍵
    21  Console.ReadLine();

【代碼詳解】

代碼1~3行定義了3個常量;第5~6行,利用聲明過的常量定義兩個新常量;第7~11行聲明了5個3種不同類型的變量;第13~19行,采用Console的WriteLine方法輸出格式字符串來進(jìn)行信息輸出,其中采用輸出格式字符串的方式在C#中經(jīng)常使用,這種方式包含兩個參數(shù):格式字符串和變量列表,{0}和{1}作為占位符出現(xiàn)在字符串中,代表后面依次排列的變量的值出現(xiàn)的位置。

【運(yùn)行結(jié)果】

單擊工具欄中的按鈕,即可在控制臺中輸出如下圖所示的結(jié)果。

【范例分析】

在這個實(shí)例中定義了常量months、weeks和days,使用定義過的常量聲明新的常量daysPerWeek、daysPerMonth,并強(qiáng)制進(jìn)行了類型轉(zhuǎn)換,把int轉(zhuǎn)為double類型;定義了多個變量,并采用格式字符串的形式輸出。在這里需注意,計(jì)算monthSalary等變量沒有進(jìn)行類型轉(zhuǎn)換,故monthSalary等變量的賦值結(jié)果最終是int類型。

【拓展訓(xùn)練】

把【范例4-1】改成隱式類型的局部變量重新運(yùn)行。

分別聲明多個常量和多個變量,變量類型根據(jù)賦的值自動確定。代碼如下(拓展代碼4-1.txt)。

    01  const  int  months=12;                                         //定義常量
    02  const  int  weeks=52;                                          //定義常量
    03  const  int  days=365;                                          //定義常量
    04  //可以使用定義過的常量聲明新的常量
    05  const  double  daysPerWeek=(double)days/(double)weeks;         //定義常量
    06  const  double  daysPerMonth=(double)days/(double)months;       //定義常量
    07  var  flag=true;                                    //定義var變量,賦值為布爾型數(shù)據(jù)
    08  var  name="Tom";                                  //定義var變量,賦值為字符串
    09  var  annualSalary=500000;                         //定義var變量,賦值為整型
    10  var  monthSalary=annualSalary/months;             //定義var變量,根據(jù)表達(dá)式的值確定類型
    11  var  weekSalary=annualSalary/weeks;               //定義var變量,根據(jù)表達(dá)式的值確定類型
    12  var  daySalary=annualSalary/days;                 //定義var變量,根據(jù)表達(dá)式的值確定類型
    13  var  x=Math.Exp(2);                               //定義var變量,根據(jù)表達(dá)式的值確定類型
    14  var  y=name.Length;                               //定義var變量,賦值為整型
    15  Console.WriteLine("double型常量daysPerWeek的值是:{0}",  y);
    16  Console.WriteLine("常量變量演示結(jié)果:");          //以下語句用來輸出結(jié)果
    17  Console.WriteLine("double型常量daysPerWeek的值是:{0}",  daysPerWeek);
    18  Console.WriteLine("double型常量daysPerMonth的值是:{0}",  daysPerMonth);
    19  Console.WriteLine("匿名變量flag的值是:{0}",  flag);
    20  Console.WriteLine("匿名變量monthSalary的值是:{0}",  monthSalary);
    21  Console.WriteLine("{0}的年薪是:{1}元",  name,  annualSalary);
    22  Console.WriteLine("{0}的月薪是:{1}元",  name,  monthSalary);
    23  Console.WriteLine("{0}的周薪是:{1}元",  name,  weekSalary);
    24  Console.WriteLine("{0}的日薪是:{1}元",  name,  daySalary);
    25  Console.ReadKey();
    26  Console.ReadLine();

技巧

匿名變量聲明的同時(shí)必須賦值,聲明一個匿名變量后不能給它賦另一類型的值;匿名變量初始化不能為null(空值),匿名變量僅限于聲明局部變量。

【運(yùn)行結(jié)果】

運(yùn)行結(jié)果如下圖所示。

4.3高手點(diǎn)撥

本節(jié)視頻教學(xué)錄像:2分鐘

變量和常量有什么區(qū)別和聯(lián)系,使用常量有什么優(yōu)點(diǎn)?

常量即程序運(yùn)行的過程中它的值不發(fā)生改變的變量。在聲明和初始化時(shí),在變量的前面加上const關(guān)鍵字,把此變量聲明成為常量。只有局部變量、字段才能被聲明為常量。

其特征如下。

常量聲明時(shí)必須要初始化,賦值后不能再改變,而且所賦的值在程序編譯的過程中要能用于計(jì)算。其次常量一般都是靜態(tài)的,但也不用在聲明常量時(shí)在其前面加上static。

為了使程序更加通俗易懂、更加方便于修改等,這個時(shí)候我們就可以使用常量。用一個簡單易懂的英文字母組合來代替程序中多次出現(xiàn)的數(shù)字等,例如,某種商品的價(jià)格或單價(jià)。這就是使用常量的優(yōu)點(diǎn)。

變量實(shí)際上代表的是數(shù)據(jù)真實(shí)的存儲位置。變量的類型決定了它存儲的數(shù)值。必須先給變量聲明類型之后才能賦值。嚴(yán)格語法格式有兩種。

變量類型 變量名稱;

變量類型 變量名稱=值;

第一種只聲明了變量的類型,沒有賦值;第二種聲明了類型且賦了值,且賦的值必須與變量的類型一致。也就是說數(shù)據(jù)要存放在合理的數(shù)據(jù)類型里面,例如,勺子是用來喝湯的,筷子是用來吃面的。另外一種情形,例如,打完球,喝完了飲料,還是很渴,有水但沒有杯子,怎么辦?可以用飲料的瓶子接水喝。由于飲料和水都是液體,也就是說數(shù)據(jù)的類型沒變,數(shù)據(jù)發(fā)生變化了,只是給變量重新賦值而已。

4.4實(shí)戰(zhàn)練習(xí)

一、思考題

C#中變量命名規(guī)則有哪些?

二、操作題

1. 創(chuàng)建一個控制臺程序,驗(yàn)證短整型變量的取值范圍。

2. 創(chuàng)建一個控制臺程序,定義一個常量pi賦值為3.14,輸入半徑,計(jì)算圓的周長和面積。

主站蜘蛛池模板: 太白县| 龙州县| 盐边县| 永城市| 贵港市| 田阳县| 曲周县| 太谷县| 宽城| 萝北县| 东阿县| 黄浦区| 临汾市| 凌源市| 仁化县| 保靖县| 安丘市| 东莞市| 仪陇县| 萨迦县| 丽江市| 仁寿县| 雷波县| 称多县| 秦皇岛市| 攀枝花市| 陆川县| 法库县| 黄骅市| 长汀县| 北海市| 黑水县| 平湖市| 浏阳市| 淮北市| 西贡区| 静安区| 都安| 红河县| 万宁市| 墨玉县|