C# 變數初始化解析
導讀 | C# 變數初始化是 C# 強調安全性的另一個例子。簡單地說,C# 編譯器需要用某個初始值對變數進行初始化,之後才能在操作中引用該變數。 |
大多數現代編譯器把沒有初始化標記為警告,但C#編譯器把它當作錯誤來看待。這就可以防止我們無意中從其他程式遺留下來的記憶體中獲取垃圾值。
C# 變數初始化的操作中有兩個方法可確保變數在使用前進行了初始化:
- 變數是類或結構中的欄位,如果沒有顯式初始化,建立這些變數時,其值就預設是 0(類和結構在後面討論)。
- 方法的區域性變數必須在程式碼中顯式初始化,之後才能在語句中使用它們的值。此時,初始化不是在宣告該變數時進行的,但編譯器會透過方法檢查所有可能的路徑,如果檢測到區域性變數在初始化之前就使用了它的值,就會產生錯誤。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C# 建構函式 (初始化成員變數的角色)C#函式變數
- hive 初始化變數Hive變數
- C# 變數C#變數
- C#之變數C#變數
- Go初始化變數的招式Go變數
- java 例項變數初始化Java變數
- build-in 變數的初始化UI變數
- 瞭解下C# 變數C#變數
- C# 變數作用域C#變數
- MySQL Handler變數解析MySql變數
- c++成員變數初始化C++變數
- 類成員變數的初始化變數
- Java變數的宣告和初始化Java變數
- C++ 變數初始化規則C++變數
- C++11新初始化方法 使用{}初始化變數C++變數
- webpack 流程解析(2):引數初始化完成Web
- 【C#食譜】【麵食】選單7:用預設值初始化泛型變數C#泛型變數
- 類變數的初始化時機總是處於例項變數的初始化時機之前!變數
- 12-成員變數的初始化變數
- c#環境變數設定C#變數
- python中用函式初始化類變數Python函式變數
- C# 解析獲取Url引數值C#
- 未初始化變數引發執行時故障變數
- 類的成員變數的初始化順序變數
- Go語言學習(3) - 變數與初始化Go變數
- c#小灶——常量、變數和賦值C#變數賦值
- 淺談C#可變引數paramsC#
- C# WebForm定義全域性變數C#WebORM變數
- C/C++ 靜態變數解析C++變數
- 淺談Java類中的變數初始化順序Java變數
- Java初始化靜態變數的時間順序Java變數
- C++類的靜態成員變數初始化C++變數
- 開發日記(一)JAVA中變數初始化流程Java變數
- 區域性靜態變數的初始化觀測變數
- C#物件初始化器C#物件
- C#初始化陣列C#陣列
- ASP.NET Razor – C# 變數簡介ASP.NETC#變數
- 【Web前端培訓】預解析(變數提升)Web前端變數