## **C#變量**
變量是用于存儲和表示數據的標識符,在聲明變量時,需要指定變量的類型,并且可以選擇性地分配一個初始值。
| 類型 | 舉例 |
| --- | --- |
| 整數類型 | sbyte、byte、short、ushort、int、uint、long、ulong 和 char |
| 浮點型 | float, double |
| 十進制類型 | decimal |
| 布爾類型 | true 或 false 值,指定的值 |
| 空字符串 | string |
| 空類型 | 可為空值的數據類型
## **變量的定義**
變量定義的語法:
~~~
<data_type> <variable_list>;
// 舉例
int i, j, k;
char c, ch;
float f, salary;
double d;
~~~
### **變量的命名規則**
* 變量名可以包含字母、數字和下劃線。
* 變量名區分大小寫。
* 變量名必須以字母或下劃線開頭。
* 避免使用 C# 的關鍵字作為變量名。
## **變量的初始化**
變量通過在等號后跟一個常量表達式進行初始化(賦值)。
~~~
variable_name = value;
~~~
## **接收來自用戶的值**
system 命名空間中的Console類提供一個函數ReadLine(),用于接收來自用戶的輸入。
~~~
int num;
num = Convert.ToInt32(Console.ReadLine());
~~~
函數`Convert.ToInt32`把用戶輸入的數據轉換為int類型,因為ReadLine()只接受字符串格式的數據。
## C#中的Lvalues和Rvalues
1. **lvalue**:lvalue 表達式可以出現在賦值語句的左邊或右邊。
1. **rvalue**:rvalue 表達式可以出現在賦值語句的右邊,不能出現在賦值語句的左邊。
## **變量作用域**
變量的作用域定義了變量的可見性和聲明周期。
### **局部變量**
在方法、循環、條件語句等代碼塊內聲明的變量是局部變量。
```
voidMyMethod()
{
intlocalVar = 10;// 局部變量
// ...
}
// localVar 在這里不可見
```
### **塊級作用域**
在C# 7 及更高版本,引入了塊級作用域,即用`{}`創建的任何塊都可以定義變量的作用域。
```
{
intblockVar = 20;// 塊級作用域
// ...
}
// blockVar 在這里不可見
```
### **方法參數作用域**
在整個方法中都是可見的。
```
voidMyMethod(intparameter)
{
// parameter 在整個方法中可見
// ...
}
```
### **全局變量**
在類的成員級別定義的變量是成員變量,在整個類中可見,如果在命名空間級別定義,那么在整個命名空間中可見。
```
classMyClass
{
intmemberVar = 30;// 成員變量,在整個類中可見
}
```
### **靜態變量作用域**
靜態變量是在類級別上聲明的,但它們的作用域也受限于其定義的類。
```
classMyClass
{
staticintstaticVar = 40;// 靜態變量,在整個類中可見
}
```
### **循環變量作用域**
在 for循環中聲明的循環變量在循環體內可見。
```
for(int i = 0; i < 5; i++)
{
// i 在循環體內可見
}
// i 在這里不可見
```