变量
1.什么是变量
变量其实就是是表示在计算机的内存地址中我们用来存储数据的一个存储空间。即变量是存储在计算机内存中的临时值。
2.变量的定义
若要为变量赋值,请使用“赋值运算符”,这是一个等号字符 即“=”符号。
请注意,应从右到左进行赋值。 换句话说,C# 编译器必须首先理解赋值运算符右侧的值,然后才能对赋值运算符左侧的变量执行赋值。 如果颠倒顺序,则会混淆 C# 编译器。
- 必须先将值分配给变量(设置),然后才能从变量中检索(获取)值。
- 可通过在声明是给变量赋值来初始化变量。
- 从右到左进行赋值。
- 使用单等号字符作为赋值运算符
- 若要从变量中检索值,只需要使用变量的名称。
- 变量必须初始化
//声明变量:就是根据数据类型在内存申请空间 string name; //变量赋值:就是将数据存储到对应的内存空间 name = "小王"; //也可以同时声明并赋值 int age = 24; //在一条语句中同时声明多个变量,并且这些变量的数据类型必须一致 string gender, address; //在一条语句中同时声明多个变量并赋值,并且这些变量的数据类型必须一致 int x =20, y=20;
注意:在使用变量之前必须先初始化变量
3.变量的命名
- 变量名只能用英文字母、数字和下划线。不能使用特殊字符,如“$”等符号。
- 变量名必须以字母或下划线开头,不能以数字开头。以下划线开头一般用于特殊目的的,不建议使用。
- 变量名不能是c#关键字。如:不能使用以下变量声明:string、int、this等。
- 变量名严格区分大小写:如:int age;和 int Age;是两个不同的变量。
- 变量名已经使用驼峰式命名法,即的一个单词的首字母小写,其他单词大写的形式。如:studentName、studentAge等格式。
- 变量的名称要有意义,尽量用对应的英文命名,如:名称:name。
- 变量名不应该包含变量是数据类型,你可能会看到使用类似string strName这种命名情况,但是这种方式已经不实用最新情况。
4.类型推段
使用var
关键字,该关键字指示 C# 编译器去推断类型。 推断出类型后,它与实际数据类型一样,也可用于声明变量。
- 声明变量时必须初始化才能使用。
- var关键字指示编译器根据变量的初始化值来推断变量的数据类型。
- 阅读其他的代码是,你可能会看到var关键字。但是,你应尽可能使用数据类型。
- 声明了变量,推断出了类型后,就不能改变变量类型。变量的类型确定后,就遵循其他变量类型遵循的强类型化规则。
//错误的声明格式 var name; name = "小明"; //正确的格式是声明并赋值 var message = "Hello world!"; //更改已经已经推断出类型"message"的类型为string, //现在我们把"message"重新赋值其他类型的值让它推断 //由于变量 message 会被立即设置为字符串值 "Hello World!",因此 C# 编译器了解其意向并将每个消息实例视为 string 类型实例。 //事实上,message 变量的类型为字符串,并且永远无法更改。 此处我们尝试将 message 设置为文本十进制值 10.0m message = 10.0;
5.变量的作用域
变量的作用域是可以访问该变量的代码区域。一般情况下,确定作用域遵循以下规则:
- 只要类在某个作用域内,其字段(也称为成员变量即属性)也在该作用域内。
- 局部变量存在于声明该变量的块语句或方法结束的右花括号之前的作用域内
- 在for、while或类似已经中声明的局部变量存在于循环体内。
1)局部变量的作用域冲突
在实际情况中我们可能会遇到变量相同,但是其作用域不同的情况。这样的情况程序是不会有问题的,但是要注意,同名的局部变量不能在同一个作用域内声明两次。
#region 相同作用域多次声明多次同一个变量 //变量"name"在同一作用域中声明两次 string name = "小明"; string name = "小米"; int j = 20; for (int i = 0; i < 10; i++) { int j = i;//j在循环之前已经定义 Console.WriteLine(j); } #endregion #region 不同作用域声明多次同一个变量 for (int i = 0; i < 10; i++) { Console.WriteLine(i); } for (int i = 0; i < 9; i++) { Console.WriteLine(i); } #endregion
2)字段和局部变量的作用冲突
在实际情况,可以缺乏名称相同、作用域相同两个变量。此时编译器是允许声明第2个相同的变量。原因是在变量之间有一个基本的区分,它吧在类型级别声明的变量看做字段,而在方法中声明的变量看作局部变量。
//程序会把这个变量看作局部变量 string name = "小明"; static void GetName() { //把这个变量看作"GetName"这个方法下的变量 string name = "小米"; //这里"name"变量的值显示的当前方法中"name"的值 Console.WriteLine(name); }
6.常量
常量就是其值在使用过程中不会发生变化的变量。在声明和初始化变量时,在变量前面加上关键字const,就可以把变量指定为一个常量。
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。
常量可以被当作常规的变量,只是它们的值在定义后不能被修改
常量的定义语法:
const 数据类型 常量名称=值;
//常量定义 const int a = 100;
常量具有以下特点:
- 常量必须在声明是初始化。指定了其值后,就不能在改写了。
- 常量的值必须能在编译时用于计算程序
- 常量总是静态的。但是注意,不必在常量声明中包含修饰符static。
使用常量的好处:
- 由于使用易于的名称代替比较难读读取的数字或字符串,常量使程序更易于阅读。
- 常量使程序更易于修改。
- 常量更容易避免程序出现错误,如果在声明常量的位置以外的地方给常量赋值,编译器会报告错误。