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

2.3 變量

變量和常量相當于為數(shù)據(jù)值指定的名稱。程序往往不是針對明確數(shù)據(jù)的,如一個程序的功能是根據(jù)長和寬,求一個矩形的面積。若只是固定長和寬的矩形,則直接用數(shù)據(jù)進行計算即可;而使用了變量的程序,通過變量作為長和寬的名稱,則改變變量的值,可求解出多個矩形的面積。

本節(jié)介紹變量的定義、命名規(guī)則、作用域和生命周期等。

2.3.1 變量的聲明和初始化

程序中的變量可以理解為數(shù)學中的變量,在數(shù)學函數(shù)中,x是一個沒有確定值的數(shù),如橢圓函數(shù)、拋物線函數(shù)、雙曲線函數(shù)等,圖形根據(jù)x的值而變化,程序中的變量也是如此。

變量由兩部分構(gòu)成,一個是變量的名稱,另一個是變量的值。如x=56,則變量名稱為x,值為56。

變量存儲可以變化的值,變量可以被聲明,可以被初始化,可以被賦值。對于聲明、初始化和賦值的作用,如下所示。

聲明 告訴系統(tǒng),這個變量(數(shù)據(jù))的存在,系統(tǒng)將根據(jù)數(shù)據(jù)類型為其分派存儲空間。

初始化 為變量指定一個初始的值。

賦值 為變量指定一個值。

變量為一段有名稱的連續(xù)存儲空間,在源代碼中通過定義變量來申請并命名這樣的存儲空間,并且通過變量的名稱來使用這段存儲空間。

在C#中,變量就是存取信息的基本單元。對于變量,必須明確變量的名稱、類型、聲明以及作用域。另外,變量的值可以通過重新賦值或運算符運算后被改變。

C#中,用戶可以通過指定數(shù)據(jù)類型和標識符來聲明變量。如定義整型變量,名稱為num,則定義語句如下所示:

int num;
或者
int num=26;

上述語法代碼中涉及3個內(nèi)容:int、num和=26。其具體說明如下:

int 定義變量類型為整型。

num 變量名稱,也叫標識符。

=26 “=”在C#中為賦值符,該符號右邊的值26為變量的初始值,值類型初始值默認為0。若該符號在變量聲明后出現(xiàn),則變量的值將被修改為新的值。

初始化變量是指為變量指定一個明確的初始值,初始化變量時有兩種方式:一種是聲明時直接賦值;另一種是先聲明、后賦值。如下代碼分別使用兩種方式對變量進行初始化:

char usersex = '男';                         //直接賦值
或者
string username;                             //先聲明
username = "陳洋洋";                         //后賦值

另外,多個同類型的變量可以同時定義或者初始化,但是這些變量中間要使用逗號分隔,聲明結(jié)束時用分號結(jié)尾,如下所示:

string username, address, phone, tel;      //聲明多個變量
int num1 = 12, num2 = 23, result = 35;     //聲明并初始化多個變量

C#中初始化變量時需要注意以下事項:

□ 變量是類或者結(jié)構(gòu)中的字段,如果沒有顯式的初始化,默認狀態(tài)下創(chuàng)建這些時初始值時為0。

□ 函數(shù)中的變量必須進行顯式的初始化,系統(tǒng)不允許使用未賦值的變量,以維護代碼的安全。

2.3.2 變量的修飾

在變量的聲明語句中,可以對變量使用修飾符進行修飾,常見的修飾有7種類型:靜態(tài)變量、實例變量、數(shù)組元素、值參數(shù)、引用參數(shù)、輸出參數(shù)以及局部變量。

變量通常在類和函數(shù)中進行聲明,類中的變量又稱作類的字段,可以被類中的任何函數(shù)調(diào)用;而函數(shù)中聲明的變量只能在函數(shù)內(nèi)部使用。它們的具體說明如下所示:

靜態(tài)變量 它是指使用static修飾符聲明的變量。

實例變量 與靜態(tài)變量相對應(yīng),是指未使用static修飾符聲明的變量。

數(shù)組元素 它是指作為函數(shù)成員參數(shù)的數(shù)組,它總是在創(chuàng)建數(shù)組實例時開始存在,在沒有對該數(shù)組實例的引用時停止存在。

值參數(shù) 是指在方法中未使用ref或out修飾符聲明的參數(shù)。

引用參數(shù) 它是指使用ref修飾符聲明的參數(shù)。

輸出參數(shù) 它是指使用out修飾符聲明的參數(shù)。

局部變量 它在應(yīng)用程序的某一段時間內(nèi)存在,局部變量可以聲明在塊、for語句、switch語句和using語句中。

提示

參數(shù)是在方法的定義和調(diào)用時使用的,將在本書第5章介紹。

2.3.3 變量的命名規(guī)則

變量的聲明需要為其指定一個名稱,但變量的命名并不是任意編寫的。在C#中為變量命名時需要遵循以下幾條規(guī)則。

□ 變量名稱必須以字母開頭。

□ 變量名稱只能由字母、數(shù)字和下劃線組成,而不能包含空格、標點符號、運算符等其他符號。

□ 名稱要為有實際意義的名稱,方便對程序的理解和維護。

□ 變量名稱不能與庫函數(shù)相同。

□ 變量名稱不能與C#中的關(guān)鍵字名稱相同,關(guān)鍵字是C#語法中被賦予特殊含義和用法的單詞或詞組。

提示

C#中有一點是例外的,那就是允許在變量名前加前綴@。在這種情況下可以使用前綴@加上關(guān)鍵字作為變量的名稱,這樣可以避免與其他語言進行交互時的沖突。但是一般不推薦讀者使用前綴@命名變量。

2.3.4 C#中的關(guān)鍵字

關(guān)鍵字是程序中有著特殊含義和用法的詞,如定義命名空間時使用的“namespace”關(guān)鍵字、定義類時使用的“class”關(guān)鍵字,以及引用命名空間時使用的“using”關(guān)鍵字,都有著指定的用法。

關(guān)鍵字不能作為變量的名稱,以避免在使用時與變量發(fā)生混淆。常見的關(guān)鍵字如表2-5所示。

表2-5 C#中的關(guān)鍵字

每一個關(guān)鍵字都有著確定的用法,常見的關(guān)鍵字及其用法如下所示。

base 用于訪問被派生類或構(gòu)造中的同名成員隱藏的基類成員。

catch 定義一個代碼塊,在特定類型異常拋出時,執(zhí)行塊內(nèi)代碼。

const 標識一個可在編譯時計算出來的變量值,即一經(jīng)指派不可修改的值。

enum 表示一個已命名常量群集的值類型。

finally 定義一個代碼塊,在程序控制流離開try代碼塊后執(zhí)行。參見try和catch。

foreach 用于遍歷一個群集的元素。

goto 一個跳轉(zhuǎn)語句,將程序執(zhí)行重定向到一個標簽語句。

namespace 定義一個邏輯組的類型和命名空間。

sizeof 一個操作符,以B(Byte)為單位返回一個值類型的長度。

throw 拋出一個異常。

try 異常處理代碼塊的組成部分之一。

typeof 一個操作符,返回傳入?yún)?shù)的類型。

using 當用于命名空間時,using關(guān)鍵字允許訪問該命名空間中的類型,而無須指定其全名。也用于定義finalization操作的范圍。

2.3.5 變量的作用域和生命周期

變量并不是在整個項目的運行中都有效的,它有著自己的作用域(作用范圍)和生命周期。一般情況下需要通過以下規(guī)則確定變量的作用域。

□ 只要變量所屬的類在某個作用域內(nèi),其字段(即成員變量)也在該作用域中。

□ 局部變量存在于聲明該變量的塊語句或方法結(jié)束的大括號之前的作用域。

□ 在for和while循環(huán)語句中聲明的變量只存在于該循環(huán)體內(nèi)。

如在命名空間下定義一個類,類中定義一個函數(shù);并在類和函數(shù)中分別定義變量,如練習2-2所示。

【練習2-2】

在命名空間Homework下定義類Program及其內(nèi)部的函數(shù)Main()、Show(),在Main()函數(shù)內(nèi)分別定義變量j和變量i,在Main()外定義變量num,代碼如下:

using System;
namespace Homework
{
   class Program
   {
      int num=30;
      static void Main()
      {
         int j=20;
         int i=5;
         Console.WriteLine(i+j+num);
      }
      static void Show()
      {
         Console.WriteLine(num);
      }
   }
}

上述代碼中,變量num在類的定義之內(nèi),在函數(shù)Main()之外,因此num可以被類中所有函數(shù)調(diào)用,其生命周期與類的聲明周期一致;而變量j和i在函數(shù)Main()內(nèi)部,只能在Main()內(nèi)部使用,其生命周期與Main()函數(shù)一致。而同在一個類中的函數(shù)Show()可以使用變量num,不能使用Main()函數(shù)中的變量j和i。

變量的作用域只在某一個范圍內(nèi)有效,是相對于定義狀態(tài)的;而變量的生命周期是相對于運行狀態(tài)的,即程序運行某個方法時方法中的變量有效,當程序執(zhí)行完某個函數(shù)后,函數(shù)中的變量也就消失了。

主站蜘蛛池模板: 成安县| 崇信县| 瑞安市| 玉林市| 尼勒克县| 厦门市| 龙山县| 丁青县| 达日县| 乐东| 哈巴河县| 广河县| 托克逊县| 平泉县| 云浮市| 钦州市| 屏南县| 河南省| 友谊县| 宣化县| 乐至县| 潜江市| 武平县| 崇明县| 长子县| 德阳市| 江阴市| 永年县| 溆浦县| 壶关县| 乐陵市| 灵丘县| 玉山县| 浪卡子县| 万年县| 宜都市| 乃东县| 克拉玛依市| 邵阳市| 曲周县| 正定县|