C# 變數初始化解析

大雄45發表於2021-04-30
導讀 C# 變數初始化是 C# 強調安全性的另一個例子。簡單地說,C# 編譯器需要用某個初始值對變數進行初始化,之後才能在操作中引用該變數。

C# 變數初始化解析C# 變數初始化解析

大多數現代編譯器把沒有初始化標記為警告,但C#編譯器把它當作錯誤來看待。這就可以防止我們無意中從其他程式遺留下來的記憶體中獲取垃圾值。

C# 變數初始化的操作中有兩個方法可確保變數在使用前進行了初始化:

  1. 變數是類或結構中的欄位,如果沒有顯式初始化,建立這些變數時,其值就預設是 0(類和結構在後面討論)。
  2. 方法的區域性變數必須在程式碼中顯式初始化,之後才能在語句中使用它們的值。此時,初始化不是在宣告該變數時進行的,但編譯器會透過方法檢查所有可能的路徑,如果檢測到區域性變數在初始化之前就使用了它的值,就會產生錯誤。

C# 的方法與 C++ 的方法相反,在 C++ 中,編譯器讓程式設計師確保變數在使用之前進行了初始化,在 Visual Basic 中,所有的變數都會自動把其值設定為 0。

C# 變數初始化例項解析

例如,在C # 中不能使用下面的語句:

public static int Main(){ int d; Console.WriteLine(d); // 報錯! 使用之前必須初始化 }
注意在這段程式碼中,演示瞭如何定義 Main(),使之返回一個 int 型別的資料,而不 是void。

在編譯這些程式碼時,會得到下面的錯誤訊息:

Use of unassigned local variable 'd'

考慮下面的語句:

Something objSomething;

在 C++ 中,上面的程式碼會在堆疊中建立 Something 類的一個例項。在 C# 中,這行程式碼僅會為 Something 物件建立一個引用,但這個引用還沒有指向任何物件。對該變數呼叫方法或屬性會導致錯誤。

在 C# 中例項化一個引用物件需要使用 new 關鍵字。如上所述,建立一個引用,使用 new 關鍵字把該引用指向儲存在堆上的一個物件:

objSomething = new Something();


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2770637/,如需轉載,請註明出處,否則將追究法律責任。

相關文章