C#笔记(7)变量
C# 变量
- 一个变量只不过是一个供程序操作的存储区的名字。
- 在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。
- 范围内的值可以存储在内存中,可以对变量进行一系列操作。
- 在内存中开辟的一块存储空间。
- 用于存储程序中需要的各种类型的数据。
例如,以下定义了三个变量,变量名为a,b,c。 - 对于变量,我们需要关注以下以下几个方面:
- 变量的声明:用特定的语法声明一个变量,让运行环境为其自动分配空间;
- 变量的命名:变量需要有个见名知意的名字,而且要符合C#的语言规范;
- 变量的初始化:变量声明后,要为其赋一个确定的初值,有了初值后才能使用该方法;
- 变量的访问:可以对变量中的数据进行存取作,但是要操作的数据要和变量的类型保持一致;
C# 中提供的基本的值类型大致可以分为以下几类:
类型 | 举例 |
---|---|
整数类型 | sbyte、byte、short、ushort、int、uint、long、ulong 和 char |
浮点型 | float 和 double |
十进制类型 | decimal |
布尔类型 | true 或 false 值,指定的值 |
空类型 | 可为空值的数据类型 |
C# 允许定义其他值类型的变量,比如 enum,也允许定义引用类型变量,比如 class。这些我们将在以后的章节中进行讨论。在本章节中,我们只研究基本变量类型。
C# 中的变量定义
C# 中变量定义的语法:
1 | <data_type> <variable_list>; |
data_type 必须是一个有效的 C# 数据类型,可以是 char、int、float、double 或其他用户自定义的数据类型。
variable_list 可以由一个或多个用逗号分隔的标识符名称组成。
一些有效的变量定义如下所示:
1 | int i, j, k; |
变量的声明
变量声明的基本语法:访问修饰符 变量类型 变量名
如果程序中需要多个相同类型的变量时,可以将这多个变量的声明放在一条语句,中间使用逗号分隔。
C# 中的变量初始化
变量通过在等号后跟一个常量表达式进行初始化(赋值)。初始化的一般形式为:
1 | variable_name = value; |
变量可以在声明时被初始化(指定一个初始值)。初始化由一个等号后跟一个常量表达式组成,如下所示:
1 | <data_type> <variable_name> = value; |
- 变量初始化,即为变量赋值的过程。变量初始化方式有以下两种形式:
- 形式一:先定义变量,再为变量赋值(两行代码)。
如: 定义一个表示年龄的变量,变量名为age,然后为年龄赋值,具体年龄为 30 岁;
1 | int age ; //先定义名为age的变量 |
- 形式二:定义变量的同时为变量赋初值(一行代码)
1 | int age = 30 ; //定义age变量同时为其赋值30 |
正确地初始化变量是一个良好的编程习惯,否则有时程序会产生意想不到的结果。
请看下面的实例,使用了各种类型的变量:
1 | namespace VariableDefinition |
当上面的代码被编译和执行时,它会产生下列结果:
1 | a = 10, b = 20, c = 30 |
变量名的命名(驼峰式)
变量名应符合标识符的基本命名规则
- 可以由字母(大小写)、数字、下划线、@符等组成
- 变量名不能以数字开头
- 不能使用 C# 中的关键字或保留字(如:for,if 等)
- 变量名字尽量做到“见名知意”,即有实际意义
变量命名时使用“驼峰式”(Camel)
即:变量名由多个单词组成时,从第2个单词开始,每个单词首字母大写,其它字母均小写,如: carSpeed
C# 严格区分大小写
- 注意:随着 C# 及 VS 的不断升级,在 VS 中支持使用汉字作为变量名,类名,项目名等,同时运行也不会报错。但是这种命名方式极不推荐,只需了解即可。
接受来自用户的值
System 命名空间中的 Console 类提供了一个函数 **ReadLine()**,用于接收来自用户的输入,并把它存储到一个变量中。
例如:
1 | int num; |
函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。
变量的访问
变量是存放数据的空间,可以对其赋值、更改和操作;要把对变量的操作理解为是对其所存储的数据的操作。
1 | static void Main(string[] args) |
变量分类及作用域
C# 中的变量分为:局部变量、全局变量
局部变量(在方法等中定义的变量)
局部变量的作用范围是在一对大括号里面(从开始大括号和结束大括号之间),一旦出了这个方法,变量即被销毁,不能再被其它代码块再使用。
说明:就像分支语句或循环语句中声明的变量,作用范围只能是循环体内或分支语句块内。全局变量 (指定义在类的里面,方法的外面的变量)
全局变量的作用范围是:整个类,即:从类定义时的开始大括号“{”到结束大括号}” 中间的任意位置都可访问到这个变量。全局变量与局部变量使用时注意事项:
由于全局变量可看作是类的成员,所以全局变量在定义完之后,可以不用赋值,会使用对应类型的默认值。如:整数默认值为0,小数默认值为0.0,布尔默认值为false
在同一个类中,允许类中的全局变量和局部变量出现重名,操作此变量时,默认操作的是: 局部变量。
C# 中的 Lvalues 和 Rvalues
C# 中的两种表达式:
- lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。
- rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。
变量是 lvalue 的,所以可以出现在赋值语句的左边。数值是 rvalue 的,因此不能被赋值,不能出现在赋值语句的左边。下面是一个有效的语句:
1 | int g = 20; |
下面是一个无效的语句,会产生编译时错误:
1 | 10 = 20; |