變數是程式暫存資料的命名容器。掌握 VB.NET 型別系統、宣告語法、運算子優先序與型別轉換技巧,撰寫型別安全且高效能的 Razor 程式碼。
變數名稱必須以字母開頭,不可包含空白或保留字元。VB.NET 不區分大小寫 (Case-Insensitive)。
// Using the Dim keyword:
Dim greeting = "Welcome to W3CSchool.cc"
Dim counter = 103
Dim today = DateTime.Today
// Using data types:
Dim greeting As String = "Welcome to W3CSchool.cc"
Dim counter As Integer = 103
Dim today As DateTime = DateTime.Today
編譯器可從指派值推斷型別 (類型推論),建議優先使用隱含宣告,僅在需明確指定型別時使用顯式宣告。
| VB.NET 型別 | .NET Framework 型別 | 描述 | 範例 |
|---|---|---|---|
| Integer | System.Int32 | 32 位元有號整數 (-2,147,483,648 ~ 2,147,483,647) | 103, 12, 5168 |
| Double | System.Double | 64 位元雙精度浮點數 | 3.14, 3.4E38 |
| Decimal | System.Decimal | 128 位元高精度十進位數 (財務計算首選) | 1037.196543 |
| Boolean | System.Boolean | 邏輯真偽值 | True, False |
| String | System.String | Unicode 字串序列 | "Hello World", "John" |
| DateTime | System.DateTime | 日期時間值 | DateTime.Now, #1/1/2024# |
| Object | System.Object | 所有型別基底,可儲存任意值 | Any value |
其他數值型別:Byte (0-255)、Short (Int16)、Long (Int64)、Single (Float32)。
| 分類 | 運算子 | 說明 | 範例 |
|---|---|---|---|
| 指派 | = | 指派運算子 | i = 6 |
| += | 加法指派 (遞增) | i += 1 | |
| -= | 減法指派 (遞減) | i -= 1 | |
| *= | 乘法指派 | i *= 2 | |
| /= | 除法指派 | i /= 2 | |
| 算術 | + | 加法 / 字串串接 (亦可用 &) | i = 5 + 5 |
| - | 減法 / 負號 | i = 5 - 5 | |
| * | 乘法 | i = 5 * 5 | |
| / | 浮點除法 | i = 5 / 5 | |
| 整數除法 | \ | 整數除法 (捨去小數) | i = 5 \ 2 → 2 |
| 取餘 | Mod | 模數運算 | i = 5 Mod 2 → 1 |
| 冪次 | ^ | 次方運算 | i = 2 ^ 3 → 8 |
| 比較 | = | 相等 (亦為指派,依語境判斷) | If i = 10 Then |
| <> | 不等於 | If i <> 10 Then | |
| < > <= >= | 大小比較 | If i < 10 Then | |
| Is | 物件參考比較 | If obj Is Nothing Then | |
| IsNot | 物件參考不等 | If obj IsNot Nothing Then | |
| Like | 模式比對 | If str Like "*pattern*" Then | |
| 邏輯 | And | 邏輯與 (不短路) | If ready And clear Then |
| Or | 邏輯或 (不短路) | If ready Or clear Then | |
| AndAlso | 短路邏輯與 (推薦) | If ready AndAlso clear Then | |
| OrElse | 短路邏輯或 (推薦) | If ready OrElse clear Then | |
| Not | 邏輯非 | If Not ready Then | |
| 字串 | & | 字串串接 (推薦) | "w3" & "schools" |
| + | 字串串接 (亦可用) | "w3" + "schools" | |
| = | 字串比較 | If str1 = str2 Then | |
| 其他 | . | 成員存取 (屬性/方法) | DateTime.Hour |
| () | 分組 / 方法呼叫 / 陣列索引 | (i+5), Add(i,5), name(3) | |
| AddressOf | 委派建立 | AddressOf MyHandler |
使用者輸入皆為字串,運算前必須轉換為正確型別。ASP.NET 提供擴充方法簡化轉換:
| 方法 | 功能 | 回傳值 | 範例 |
|---|---|---|---|
| AsInt() / IsInt() | 轉換/檢查整數 | Integer / Boolean | If myString.IsInt() Then myInt = myString.AsInt() |
| AsFloat() / IsFloat() | 轉換/檢查浮點數 | Double / Boolean | If myString.IsFloat() Then myFloat = myString.AsFloat() |
| AsDecimal() / IsDecimal() | 轉換/檢查十進位數 | Decimal / Boolean | If myString.IsDecimal() Then myDec = myString.AsDecimal() |
| AsDateTime() / IsDateTime() | 轉換/檢查日期時間 | DateTime / Boolean | myDate = "10/10/2024".AsDateTime() |
| AsBool() / IsBool() | 轉換/檢查布林值 | Boolean / Boolean | myBool = "True".AsBool() |
| ToString() | 任意型別轉字串 | String | myString = 1234.ToString() |
最佳實務: 永遠使用 IsXxx() 先驗證,再呼叫 AsXxx() 轉換,避免擲回例外。或使用 TryParse 模式進行更精細的錯誤處理。