C# 变量

  • 一个变量只不过是一个供程序操作的存储区的名字。
  • 在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。
  • 范围内的值可以存储在内存中,可以对变量进行一系列操作。
  • 在内存中开辟的一块存储空间。
  • 用于存储程序中需要的各种类型的数据。
     例如,以下定义了三个变量,变量名为a,b,c。
  • 对于变量,我们需要关注以下以下几个方面:
    1. 变量的声明:用特定的语法声明一个变量,让运行环境为其自动分配空间;
    2. 变量的命名:变量需要有个见名知意的名字,而且要符合C#的语言规范;
    3. 变量的初始化:变量声明后,要为其赋一个确定的初值,有了初值后才能使用该方法;
    4. 变量的访问:可以对变量中的数据进行存取作,但是要操作的数据要和变量的类型保持一致;

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
2
3
4
int i, j, k;
char c, ch;
float f, salary;
double d;

变量的声明

变量声明的基本语法:访问修饰符 变量类型 变量名
如果程序中需要多个相同类型的变量时,可以将这多个变量的声明放在一条语句,中间使用逗号分隔。

C# 中的变量初始化

变量通过在等号后跟一个常量表达式进行初始化(赋值)。初始化的一般形式为:

1
variable_name = value;

变量可以在声明时被初始化(指定一个初始值)。初始化由一个等号后跟一个常量表达式组成,如下所示:

1
<data_type> <variable_name> = value;
  • 变量初始化,即为变量赋值的过程。变量初始化方式有以下两种形式:
  • 形式一:先定义变量,再为变量赋值(两行代码)。
     如: 定义一个表示年龄的变量,变量名为age,然后为年龄赋值,具体年龄为 30 岁;
1
2
int    age  ; //先定义名为age的变量
age = 30 ; //为age赋值,30
  • 形式二:定义变量的同时为变量赋初值(一行代码)
1
int   age = 30 ;  //定义age变量同时为其赋值30 

正确地初始化变量是一个良好的编程习惯,否则有时程序会产生意想不到的结果。

请看下面的实例,使用了各种类型的变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace VariableDefinition
{
class Program
{
static void Main(string[] args)
{
short a;
int b ;
double c;

/* 实际初始化 */
a = 10;
b = 20;
c = a + b;
Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c);
Console.ReadLine();
}
}
}

当上面的代码被编译和执行时,它会产生下列结果:

1
a = 10, b = 20, c = 30

变量名的命名(驼峰式)

变量名应符合标识符的基本命名规则

  1. 可以由字母(大小写)、数字、下划线、@符等组成
  2. 变量名不能以数字开头
  3. 不能使用 C# 中的关键字或保留字(如:for,if 等)
  4. 变量名字尽量做到“见名知意”,即有实际意义

变量命名时使用“驼峰式”(Camel)
  即:变量名由多个单词组成时,从第2个单词开始,每个单词首字母大写,其它字母均小写,如: carSpeed
C# 严格区分大小写

  • 注意:随着 C# 及 VS 的不断升级,在 VS 中支持使用汉字作为变量名,类名,项目名等,同时运行也不会报错。但是这种命名方式极不推荐,只需了解即可。

接受来自用户的值

System 命名空间中的 Console 类提供了一个函数 **ReadLine()**,用于接收来自用户的输入,并把它存储到一个变量中。
例如:

1
2
int num;
num = Convert.ToInt32(Console.ReadLine());

函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。

变量的访问

变量是存放数据的空间,可以对其赋值、更改和操作;要把对变量的操作理解为是对其所存储的数据的操作。

1
2
3
4
5
static void Main(string[] args)
{
int a = 100;
a = a + 200;//将a的值加上200再存入变量aConsole.Writeline( a);// 300}
}

变量分类及作用域

C# 中的变量分为:局部变量、全局变量

  • 局部变量(在方法等中定义的变量)
    局部变量的作用范围是在一对大括号里面(从开始大括号和结束大括号之间),一旦出了这个方法,变量即被销毁,不能再被其它代码块再使用。
    说明:就像分支语句或循环语句中声明的变量,作用范围只能是循环体内或分支语句块内。

  • 全局变量 (指定义在类的里面,方法的外面的变量)
    全局变量的作用范围是:整个类,即:从类定义时的开始大括号“{”到结束大括号}” 中间的任意位置都可访问到这个变量。

  • 全局变量与局部变量使用时注意事项:
    由于全局变量可看作是类的成员,所以全局变量在定义完之后,可以不用赋值,会使用对应类型的默认值。如:整数默认值为0,小数默认值为0.0,布尔默认值为false
    在同一个类中,允许类中的全局变量和局部变量出现重名,操作此变量时,默认操作的是: 局部变量。

C# 中的 Lvalues 和 Rvalues

C# 中的两种表达式:

  1. lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。
  2. rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。

变量是 lvalue 的,所以可以出现在赋值语句的左边。数值是 rvalue 的,因此不能被赋值,不能出现在赋值语句的左边。下面是一个有效的语句:

1
int g = 20;

下面是一个无效的语句,会产生编译时错误:

1
10 = 20;