c#成員變量和局部變量

在方法內部可以定義變量,被稱爲局部變量。局部變量的一般形式如下


[變量修飾符] 變量類型 變量名;


變量修飾符可以是final,表示這是常量。


變量類型可以是Java中任意合法的基本類型或複合類型。


變量名是用戶自定義標識符,遵循標識符的一般規則。


可以在一行中定義多個局部變量,以逗號分隔。


定義變量時可以同時賦初值。


局部變量必須要先定義後使用。


例如,下面就是一些局部變量的定義:


final double PI = 3.1416;
int  ix, iy;
final int MAIL = 0;


從形式上看,局部變量和類的成員變量十分相似,但在使用上它們的區別很大。


局部變量沒有訪問權限修飾符,不能用public、private和protected來修飾。這是因爲它只能在定義它的方法內部使用。


局部變量不能用static修飾,沒有"靜態局部變量",這是Java和C/C++的一個細微差別。


系統不會自動爲局部變量賦初值,但對於成員變量,系統會自動賦初值。基本類型的值爲0,複合類型的值爲null。


局部變量的作用域僅限於定義它的方法,在該方法的外部無法訪問它。成員變量的作用域在整個類內部都是可見的,所有成員方法都可以使用它。如果訪問權限允許,還可以在類的外部使用成員變量。


局部變量的生存週期與方法的執行期相同。當方法執行到定義局部變量的語句時,局部變量被創建;執行到它所在的作用域的最後一條語句時,局部變量被銷燬。類的成員變量,如果是實例成員變量,它和對象的生存期相同。而靜態成員變量的生存期是整個程序運行期。


在同一個方法中,不允許有同名的局部變量。在不同的方法中,可以有同名的局部變量,它們互不干涉。


局部變量可以和成員變量同名,且在使用時,局部變量具有更高的優先級。


【例3.12】 局部變量使用示例。 


//-----------文件名localVariable.java,程序編號3.22-----------------


public class localVariable{
public void method_1(){
int va = 0;    //正確
public int pva;   //錯誤,不能有訪問權限
static int sa;   //錯誤,不能是靜態的
final int CONST = 10; //正確,可以是常量
double va =0.0;   //錯誤,與前面的va同名
vb = 100.0;    //錯誤,vb還未定義
double vb;
vb = 100.0;    //正確,現在可以使用了   
}
public void method_2(){
va = 0;     //錯誤,method_1()中的變量va在此不可用
int CONST = 100;   //正確,它與method_1()中的CONST不同
}
}


【例3.13】 局部變量與成員變量同名問題示例。


//-----------文件名localVSmember.java,程序編號3.23-----------------


public class localVSmember{
private int iVar = 100;
public void method_1(){
int iVar;    //正確可以與成員變量同名
iVar = 200;    //這裏訪問的是局部變量
this.iVar = 300;  //這裏訪問的是成員變量
}
public void method_2(){
iVar = 400;    //這裏訪問的是成員變量
}
}


在程序3.23中,同名的局部變量會屏蔽掉成員變量。爲了訪問被屏蔽的成員變量,需要使用一個前綴"this",它表示的是"本對象"。 
發佈了1 篇原創文章 · 獲贊 12 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章