C# 教學 – 宣告變數
學習如何宣告變數
前言
如何宣告變數是在C#程式語言中一個重要的基礎概念。變數是用來存儲和管理數據的一種方式,它們在程式中具有關鍵的角色。在C#中,宣告變數是指定變數的名稱和數據類型,以便在程式中使用。這些變數可以存儲不同類型的數據,例如整數、浮點數、字串、布林值等等。
接下來,要說明變數是什麼和學習如何宣告變數。
Outline
C# 變數是什麼
變數是用來存儲數據的容器,就像你的筆記本上的空格,你可以在其中寫下各種信息。在程式中,變數讓你可以存儲不同類型的數據,例如數字、文字或布爾值(True或False)。
C# 變數生命週期 (Life Cycle)是什麼
在 C# 和其他程式語言中,變數的生命週期(Life Cycle)是指變數存在的時間範圍,以及變數何時被創建和銷毀。變數的生命週期與其作用域(Scope)密切相關,作用域決定了變數在程式中的可見性和存活時間。以下是變數生命週期的一些重要觀點:
- 局部變數(Local Variables):局部變數是在某個程式碼區塊(通常是函數或方法)中聲明的變數。它們的生命週期始於進入該區塊的執行,並在離開該區塊時結束。這意味著局部變數只在其宣告所在的區塊中可見,並在離開該區塊後自動銷毀。
- 全域變數(Global Variables):全域變數是在程式的最外層範圍中聲明的變數,通常在類別的屬性中或在命名空間中。它們的生命週期與程式的執行時間相同,即在程式開始執行時被創建,在程式結束時被銷毀。全域變數在整個程式中都可見。
- 物件變數(Object Variables):當在類別中聲明變數時,變數的生命週期通常與所屬物件實例的生命週期相關聯。變數在物件實例被創建時創建,並在物件實例被垃圾回收時銷毀。這使得變數可以存儲特定物件實例的狀態。
- 靜態變數(Static Variables):靜態變數在整個應用程序的生命週期內存在,無需實例化類別。它們在應用程序啟動時創建,並在應用程序結束時銷毀。靜態變數通常用於存儲應用程序級別的全域數據。
變數的生命週期是確保變數在正確的時間和地點使用的關鍵因素。當變數超出其生命週期範圍時,它們可能會變得無效,並導致未定義的行為,導致程式運行發生無法預期的錯誤。因此,在程式設計中,請確保理解變數的生命週期,以避免錯誤和資源洩漏。
C# 如何宣告變數
C# 宣告變數是定義一個變數並為其分配記憶體空間的過程。C#是一個強型別語言,在宣告變數這個過程通常包括指定變數的名稱和數據類型,以確定它可以存儲的數據類型。這不僅有助於在程式碼中使用變數,還有助於提供程式碼的可讀性和維護性。
要宣告變數,首先需要選擇適當的數據類型,例如整數、浮點數、字符、布林等。然後,使用該數據類型宣告變數,後接變數的名稱,定義變數名稱需遵循命名規則1,並使用等號(=)將其初始化為所需的初始值。例如以下語法:
上述宣告方式,步驟如下
- 宣告的資料型別。( Ex: int 、double、string、類別…等等 )
- 空一格 ( 使編譯器能夠區分關鍵字 )
- 決定資料的名稱 ( 注意不能夠與關鍵字同名 )
- 等於符號 ( 如果要賦予初始值時需要,否則給予 ‘ ; ‘ 即可, Ex: 資料型別 變數名稱; )
- 想賦值的資料
以上是C# 宣告變數的方式。
C# 宣告變數範例
C# 宣告變數範例,接下來會以資料型別int、double、string、object為範例,並為每個範例做詳細的說明,說明其使用方式以及須注意的地方。
C# 宣告變數 int – 範例
以下是一個 C# 宣告整數變數的範例,以及對其語法和需要注意的地方的說明:
說明:
- int:這是數據類型,表示有符號32位元整數2。C# 中的整數變數通常使用 int 關鍵字來聲明。整數可以是正數、負數或零。
- myNumber:這是變數的名稱,可以自行指定,但必須遵循一些命名規則。變數名稱必須以字母或底線開頭,後面可以跟隨字母、數字或底線,且區分大小寫。請注意,變數名稱不能與 C# 保留字(關鍵字)相同。
- =:這是賦值運算符,用於將右側的值賦給左側的變數。在這個範例中,將整數值 42 賦給變數 myNumber。
- 42:這是整數值,它是 myNumber 的初始值。整數值可以包含正負號,但在這個例子中是正整數。
需要注意的地方:
- 數據類型 int 表示整數,並使用有限的位元數(通常 32 位)來存儲數值。因此,整數變數 myNumber 只能存儲在 int 資料類型的範圍內的值。如果嘗試將超出範圍的值賦給 myNumber,則可能導致數據溢出。
- 變數名稱 myNumber 是有意義的名稱,應該描述變數的用途或內容,以增加程式碼的可讀性。良好的命名慣例有助於其他開發人員更容易理解程式碼的功能。
- 賦值運算符 = 用於將值賦給變數。確保賦值運算符的左側是變數,右側是值或表達式。
C# 宣告變數 double – 範例
C# 宣告雙精度浮點數變數(double)的範例,以及對其文法和需要注意的地方的說明:
說明:
- double:這是數據類型,表示雙精度浮點數。C# 中的雙精度浮點數變數通常使用 double 關鍵字來聲明。雙精度浮點數用於存儲具有小數部分的數字,提供更高的精度。
- myDouble:這是變數的名稱,可以自行指定,但必須遵循命名規則。變數名稱必須以字母或底線開頭,後面可以跟隨字母、數字或底線,區分大小寫。避免使用 C# 保留字(關鍵字)作為變數名稱。
- =:這是賦值運算符,用於將右側的值賦給左側的變數。在這個範例中,將雙精度浮點數值 3.14159 賦給變數 myDouble。
- 3.14159:這是雙精度浮點數值,它是 myDouble 的初始值。雙精度浮點數可以表示帶有小數部分的數值,提供更高的精度。
需要注意的地方:
- 雙精度浮點數 double 提供了更高的精度,但仍然具有有限的精度。它在表示某些小數時可能會有捨入誤差。在特定情況下,可能需要使用 decimal 類型以獲得更高的精度。
- 變數名稱 myDouble 是有意義的名稱,應該描述變數的用途或內容,以提高程式碼的可讀性。
- 賦值運算符 = 用於將值賦給變數。確保賦值運算符的左側是變數,右側是值或表達式。
- 考慮小數位數的問題:雙精度浮點數可以表示小數位數,但要謹慎處理捨入誤差,特別是在財務或精確計算方面。
C# 宣告變數 string – 範例
C# 宣告字串變數(string)的範例,以及對其文法和需要注意的地方的說明:
說明:
- string:這是數據類型,表示字串。C# 中的字串變數通常使用 string 關鍵字來聲明。字串變數用於存儲文本和字串數據,可以包含字母、數字、符號和空格。
- myString:這是變數的名稱,可以自行指定,但必須遵循命名規則。變數名稱必須以字母或底線開頭,後面可以跟隨字母、數字或底線,區分大小寫。避免使用 C# 保留字(關鍵字)作為變數名稱。
- =:這是賦值運算符,用於將右側的值賦給左側的變數。在這個範例中,將字串值 “Hello, World!” 賦給變數 myString。
- “Hello, World!”:這是字串文字(string literal),它是 myString 的初始值。字串文字使用雙引號括起來,可以包含文本內容。
需要注意的地方:
- 字串是引用類型,它是一種對象,而不是值類型。這意味著變數存儲的是對字串對象的引用,而不是實際的字串內容。因此,字串變數可以為 null,表示沒有引用到任何字串對象。
- 字串文字(string literals)必須用雙引號括起來。字串文字可以包含各種字符,包括特殊字符、轉義序列和 Unicode 字符。
- 字串是不可變的,這意味著一旦創建了一個字串,它的內容不能被更改。任何對字串的修改都會創建一個新的字串對象。
- 在 C# 中,可以使用 + 運算符來連接字串,也可以使用 string.Format 或字串插值(string interpolation)來動態構建字串。
- 字串處理是 C# 中非常重要的一個方面,因為它在許多應用中用於處理文本和用戶輸入。應該謹慎處理字串以避免安全性問題,如 SQL 注入或跨站腳本攻擊。
C# 宣告變數 object – 範例
C# 中,object 是一種通用的數據類型,它可以用來存儲任何 C# 物件的參考(reference)。使用 object 類型的變數可以允許你存儲不同類型的數據,但也需要謹慎處理和轉換。以下是一個宣告 object 變數的範例,以及對其文法和需要注意的地方的說明:
說明:
- object:object 是通用的數據類型,可以存儲任何 C# 物件的參考,包括內置數據類型、自定義類型等。宣告 object 變數時,它可以引用任何類型的對象。
- myObject:這是變數的名稱,它可以自行指定,必須遵循變數命名的規則。變數名稱必須以字母或底線開頭,後面可以跟隨字母、數字或底線,區分大小寫。
- =:這是賦值運算符,用於將右側的值賦給左側的變數。在這個範例中,將字串 “Hello, World!” 的參考賦給 myObject 變數。
- “Hello, World!”:這是字串文字(string literal),它是一個 C# 字串對象的實例。在這個範例中,myObject 變數存儲了對這個字串對象的參考。
需要注意的地方:
- 使用 object 類型可以將不同類型的對象存儲在同一變數中。這提供了一些靈活性,但也需要謹慎處理和類型轉換,因為在運行時需要確保對象的實際類型。
- 若要訪問 object 變數中存儲的對象的成員,需要對其進行類型轉換。例如,如果 myObject 實際上是一個字串,則可以使用類型轉換來訪問字串方法或屬性。不過,錯誤的類型轉換可能導致運行時錯誤。
- object 類型主要用於處理未知類型的數據,或者在需要通用性的情況下。通常,盡量避免使用 object 類型,因為它會減少編譯時類型檢查,可能導致潛在的運行時錯誤。
- 使用 is 運算符和類型轉換來檢查和操作 object 變數中的對象的實際類型。
(P.S. 以上畫底線對初學者先記著就好,不理解沒關西,初學課程學完就能夠理解ˇ!)
總結
以上是初學者對C# 變數宣告的教學,當中介紹了變數是什麼、如何宣告變數以及宣告變數範例和詳細說明。
最後,變數宣告是程式設計的基礎,是處理和操作數據的的第一步。選擇適當的變數類型、命名和初始值能夠減少不必要的麻煩,如運行錯誤、維護性低、可讀性低…等等問題, 良好的習慣是編寫高質量程式碼的關鍵步驟。
參考資料
文章註解
- 遵循命名規則,通常以字母或底線開頭,後面可以跟字母、數字或底線,區分大小寫。不應該使用語言的保留字作為變數名稱。 ↩︎
- Signed(有符號)和Unsigned(無符號)是數字表示法中的兩個概念,它們用於描述整數的表示方式。這些概念通常與計算機編程和數值系統相關。以下是它們的解釋:
Signed(有符號):有符號數字可以表示正數、負數和零。有符號整數使用位元中的一個位元(通常是最高位元)來表示符號,例如,正數使用 0,負數使用 1。其餘的位元用來表示數值。這意味著有符號整數可以表示正數和負數,並且有一個範圍,取決於位元的數量。例如,一個有符號的 8 位整數可以表示從 -128 到 127 之間的值。
例如,一個 4 位有符號的二進制數 1101 表示 -3。
Unsigned(無符號):無符號數字只能表示非負整數(正數和零),不包括負數。無符號整數使用所有位元來表示數值,並且不使用位元表示符號。這使得無符號整數能夠表示更大的正整數範圍,因為不需要用位元來表示符號。
例如,一個 8 位無符號的二進制數 11011010 表示 218。
有符號和無符號整數的選擇取決於所需的數值範圍和所處的情境。 ↩︎