2.1 变量与常量
C#语言与其他编程语言一样,通过变量来存储各类数据信息。变量有名字,每一种变量分别对应一种数据类型,是程序中数据流通的载体。常量,顾名思义,就是指在整个程序执行过程中,这些值一直保持不变。常量是相对于变量来说的,每一个常量也对应一种数据类型。
2.1.1 变量的数据类型
作为一名程序员应该熟悉、掌握变量的数据类型,这样才可以在程序中正确使用变量,提高开发效率。C#语言的变量类型如表2-1所示。
表2-1 数据类型
提示:C#语言中,对大小写的程序命令有明显区分。除了DateTime数据类型之外,其数据类型都是以小写字母开头。
一种数据类型,只允许对对应变量执行该数据类型的操作。例如String数据类型,只允许该类型的变量进行字符串的相关操作,而不能操作日期或数值类型的变量。在表2-1中,已对各数据类型内存占用大小做了说明。恰当地使用数据类型,可以为应用程序“瘦身”,提高其运行效率。
2.1.2 变量的声明
创建变量需要指明数据类型和名称。变量名的定义尽量与该变量的作用相关。C#语言的变量声明,是以数据类型在前,变量名在后的形式来定义的,其语法如下代码所示。
DataType VarriableName;
Datatype表示数据类型,VarriableName则是用户定义的变量名,其应用如下代码所示。
01 DateTime b_csrq; //定义一个婴儿出生日期变量 02 string fn_name; //定义一个妇女姓名的字符串变量 03 string zf_name; //定义一个丈夫姓名的字符串变量 04 double nz_sale; //定义一个年终销售总额的双精度变量
以上变量名的定义,十分有意义。第01行代码定义一个婴儿出生的日期变量,该变量第一个字母源于英文baby的第一个字母,后面4个字母是由“出生日期”中文发音组成。第05行代码定义变量名,开头“fn”是“妇女”的中文发音。
老练的程序员更喜欢把数据类型的第一个字母或数据类型的缩写,放在变量的前缀,如下代码所示。
01 DateTime dtCsrq; //定义一个出生日期变量 02 string strName; //定义一个姓名字符串变量 03 int iCsrs; //定义一个出生人数的整型变量 04 bool bExit; //定义一个程序退出判断的逻辑变量
上面的代码第01行的变量开头“dt”代表DateTime数据类型的缩写。第02行代码的变量,以“str”开头是string数据类型的前三个字母。第03行中的变量名以“i”字母开头,表示该变量为整型变量。第04行的变量以“b”字母开头,表示一个bool数据类型。
整个程序中变量的定义要有一定的风格,要有逻辑可循。如果以类型的第一个字母或缩写开头的,则整个程序就要保持这种风格。在大型程序开发过程中,每个程序员都有一个变量定义规范表,以规范程序员的变量定义,这样可以统一整个程序的开发风格,并增强程序的可读性,方便程序后期修改及二次开发。
2.1.3 变量的赋值
在变量定义之后,就可以对其进行赋值。变量的赋值只需在“=”符号之后,设置所需数值就可以了,其语法如下代码所示。
VarriableName=Value;
VarriableName表示变量,等号右边为变量的赋值,其应用如下代码所示。
01 fn_name = "孟丽君"; //定义妇女的姓名为“孟丽君” 02 zf_name = "包拯"; //定义丈夫姓名为“包拯” 03 nz_sale = 56389.59; //定义年终销售额为56389.59;
上面第01~02行代码由于是字符串类型,所以其赋值要加上双引号,而第03行是数值类型,其赋值不用加引号。
注意:C#语言中每一行程序以英文分号“;”为结束,如果没有,则视为与下行连接成为一行程序。如第02行结束没有“;”,则C#语言默认为“zf_name = "包拯"nz_sale= 56389.59;”,这样程序会出错。如果第02行代码在“=”前,按“Enter”键,将“= 56389.59;”代码换行成第04行代码。这时第03行代码结束没有“;”,C#语言默认为“nz_sale = 56389.59;”,程序仍然正常执行。
变量的赋值在变量声明时就可以进行,一般称之为变量的初始化,其代码如下所示。
01 string fn_name= "孟丽君"; //定义一个妇女姓名的字符串变量 02 string zf_name= "包拯"; //定义一个丈夫姓名的字符串变量 03 double nz_sale= 56389.59;; //定义一个年终销售总额的双精度变量
2.1.4 常量的定义
常量也是存储信息的一种方法,但常量一经赋值后,将保持不变。常量与变量一样,需要定义数据类型,需要名称。在 C#语中,定义常量可以通过 const 关键字来定义,也可以通过readonly关键字来定义。其定义的代码如下:
01 const string zf_name= "包拯"; //将“包拯”定义为一个文本静态常量 02 readonly fn_name= "孟丽君"; //定义一个妇女姓名的字符串常量
常量可以在程序中为其他变量赋值,其代码如下:
string strName= zf_name; //定义字符串变量,并将常量值赋予该变量
通过const关键字定义的常量,只局限于以上的数据类型。一般情况下,不能在类的构造函数中定义。通过readonly关键字来定义常量,没有以上的限制,所以用readonly关键字来定义常量更具有灵活性。一般以 const 关键字定义的常量称之为静态常量。建议读者多使用readonly关键字来定义常量,这样可以减少程序出现潜在错误。
2.1.5 隐含类型变量
隐含类型变量,是相对于正常明确定义数据类型变量而言的。隐含类型变量是.NET 3.0后发展的新型数据类型,该类型通过var关键字来定义。在定义隐含类型变量时,必须同时为该变量赋值,其代码如下:
var fn_name= "孟丽君"; //定义一个隐含类型变量--姓名
隐含类型变量,在定义时会根据其赋值推断出该变量,定义成什么类型。例如上面的代码, C#会推断该隐含类型变量其实是字符串类型。var 关键字声明的变量仅限于局部变量,而且必须是有赋值,不赋空值。