## **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 在这里不可见
```