- C#從入門到精通(第2版)
- 龍馬高新教育策劃 國家863中部軟件孵化器編著
- 1363字
- 2019-01-02 05:29:04
第4章 變量與常量
本章視頻教學錄像:23分鐘
通過第3章的學習,我們對C#的數據類型及類型轉換有了簡單的了解。每一門語言都有各自的變量和常量的命名與使用規則,本章主要介紹常量與變量的相關內容。
本章要點(已掌握的在方框中打鉤)
□ 變量
□ 匿名變量
□ 常量
4.1變量
本節視頻教學錄像:6分鐘
變量是編程語言中最基本的元素。變量是一個名稱,表示程序執行時存儲在內存中的數據。當需要訪問存儲在變量中的信息時,只需要使用變量的名稱即可。
4.1.1變量的命名
C#是一種對大小寫敏感的語言,變量命名需要遵循如下規則。
(1) 變量名必須以字母或下畫線開頭,只能由字母(大寫和小寫)、數字和下畫線組成。
(2) 變量名不能包含空格、標點符號、運算符字符。
(3) 變量名不能與C#中的關鍵字、運算符或函數名同名。
(4) 使用多個單詞組合為變量名時,使用駱駝命名法(camelCase),即第1個單詞的首字母小寫,其他單詞的首字母大寫。
注意
C#不能用關鍵字做變量名,但C#允許在關鍵字的前面加上前綴“@”作為變量的名字,如@using是合法的變量名。引入“@”的目的在于與其他語言進行交互時避免沖突。建議盡量不要使用前綴“@”作為變量名的一部分。
下面給出一些合法與不合法的變量名例子。
2a //不合法,以數字開頭 number.1 //不合法,含有非法字符'.' numberOne //合法 break //不合法,break為關鍵字 mod //不合法,mod為運算符 Main //不合法,Main為函數 intAge //合法,使用駱駝命名法
4.1.2變量的聲明和賦值
變量的聲明語法如下。
[訪問修飾符] [變量修飾符] 變量的數據類型 變量名
其中訪問修飾符和變量修飾符可以省略,這將在9.2節中介紹。變量聲明和賦值如下所示。
01 private int x; //聲明x為整型變量,private可以省略 02 x=10; //變量的賦值,讓變量x的值為10 03 string name="John"; //聲明一個字符串變量name,值為John
也可以在聲明變量的同時賦值,如:
int x=10;
也可以在一行聲明多個變量,如:
int x=3,y=8; //不同變量之間用逗號隔開
4.1.3 隱式類型的局部變量
隱式類型的局部變量又叫匿名變量,是C# 3.0版本中引入的一個新用法,使用關鍵字var來聲明。可以用var聲明任何類型的局部變量,它只是負責告訴編譯器,該變量需要根據初始化表達式來推斷變量的類型,而且只能是局部變量。
語法如下。
var 變量名稱=變量值;
例如,
01 var i=8; //定義局部變量i,i作為整型數據被編譯 02 var s="Hello C#!"; //定義局部變量s,s作為字符串數據被編譯
4.2常量
本節視頻教學錄像:12分鐘
常量就是在程序運行過程中值保持不變的量,即在程序執行期間,常量的值不會發生改變。可以在代碼的任何位置用常量代替實際值。如定義const PI=3.14159265,這里使用PI來代替數值3.14159265。常量聲明時需要包含常量的名稱和常量的值,其格式如下。
[訪問修飾符號] const 類型 常量表達式;
其中“訪問修飾符號”可以省略。常量的修飾符可以是new、public、protected、internal、private等。常量的表達式表示常量的名字。如下所示。
public const int x=3, y=8;//定義int型常量x和y,其值分別是3和8
可以在一行聲明多個常量。不過如果每行只聲明一個常量,代碼會更具有可讀性。
【范例4-1】 定義常量和變量,熟悉常量、變量的使用。
⑴ 在VisualStudio 2013中新建C#控制臺程序,項目名為“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("常量變量演示結果:"); //輸出常量和變量的值 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(); //暫停程序的運行直到輸入任意鍵 21 Console.ReadLine();
【代碼詳解】
代碼1~3行定義了3個常量;第5~6行,利用聲明過的常量定義兩個新常量;第7~11行聲明了5個3種不同類型的變量;第13~19行,采用Console的WriteLine方法輸出格式字符串來進行信息輸出,其中采用輸出格式字符串的方式在C#中經常使用,這種方式包含兩個參數:格式字符串和變量列表,{0}和{1}作為占位符出現在字符串中,代表后面依次排列的變量的值出現的位置。
【運行結果】
單擊工具欄中的按鈕,即可在控制臺中輸出如下圖所示的結果。

【范例分析】
在這個實例中定義了常量months、weeks和days,使用定義過的常量聲明新的常量daysPerWeek、daysPerMonth,并強制進行了類型轉換,把int轉為double類型;定義了多個變量,并采用格式字符串的形式輸出。在這里需注意,計算monthSalary等變量沒有進行類型轉換,故monthSalary等變量的賦值結果最終是int類型。
【拓展訓練】
把【范例4-1】改成隱式類型的局部變量重新運行。
分別聲明多個常量和多個變量,變量類型根據賦的值自動確定。代碼如下(拓展代碼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變量,賦值為布爾型數據 08 var name="Tom"; //定義var變量,賦值為字符串 09 var annualSalary=500000; //定義var變量,賦值為整型 10 var monthSalary=annualSalary/months; //定義var變量,根據表達式的值確定類型 11 var weekSalary=annualSalary/weeks; //定義var變量,根據表達式的值確定類型 12 var daySalary=annualSalary/days; //定義var變量,根據表達式的值確定類型 13 var x=Math.Exp(2); //定義var變量,根據表達式的值確定類型 14 var y=name.Length; //定義var變量,賦值為整型 15 Console.WriteLine("double型常量daysPerWeek的值是:{0}", y); 16 Console.WriteLine("常量變量演示結果:"); //以下語句用來輸出結果 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();
技巧
匿名變量聲明的同時必須賦值,聲明一個匿名變量后不能給它賦另一類型的值;匿名變量初始化不能為null(空值),匿名變量僅限于聲明局部變量。
【運行結果】
運行結果如下圖所示。

4.3高手點撥
本節視頻教學錄像:2分鐘
變量和常量有什么區別和聯系,使用常量有什么優點?
常量即程序運行的過程中它的值不發生改變的變量。在聲明和初始化時,在變量的前面加上const關鍵字,把此變量聲明成為常量。只有局部變量、字段才能被聲明為常量。
其特征如下。
常量聲明時必須要初始化,賦值后不能再改變,而且所賦的值在程序編譯的過程中要能用于計算。其次常量一般都是靜態的,但也不用在聲明常量時在其前面加上static。
為了使程序更加通俗易懂、更加方便于修改等,這個時候我們就可以使用常量。用一個簡單易懂的英文字母組合來代替程序中多次出現的數字等,例如,某種商品的價格或單價。這就是使用常量的優點。
變量實際上代表的是數據真實的存儲位置。變量的類型決定了它存儲的數值。必須先給變量聲明類型之后才能賦值。嚴格語法格式有兩種。
變量類型 變量名稱;
變量類型 變量名稱=值;
第一種只聲明了變量的類型,沒有賦值;第二種聲明了類型且賦了值,且賦的值必須與變量的類型一致。也就是說數據要存放在合理的數據類型里面,例如,勺子是用來喝湯的,筷子是用來吃面的。另外一種情形,例如,打完球,喝完了飲料,還是很渴,有水但沒有杯子,怎么辦?可以用飲料的瓶子接水喝。由于飲料和水都是液體,也就是說數據的類型沒變,數據發生變化了,只是給變量重新賦值而已。
4.4實戰練習
一、思考題
C#中變量命名規則有哪些?
二、操作題
1. 創建一個控制臺程序,驗證短整型變量的取值范圍。
2. 創建一個控制臺程序,定義一個常量pi賦值為3.14,輸入半徑,計算圓的周長和面積。