文档介绍:第 3 章 C#语法基础
在深入讨论 C#面向对象程序设计之前,首先需要掌握 C#语言的基本语法结构。本章将讲解 C#语法结构
的基本要素,包括数据类型、操作符和表达式,以及程序控制结构。
数据类型
数据类型是对客观数据对象的抽象,它将数据和对数据的操作封装为一个整体。C#语言中的数据类型分
为值类型和引用类型两大类。值类型包括整数、字符、实数、布尔数等简单值类型,以及结构(struct)和
枚举(enum)两种复合值类型;引用类型包括类、接口(interface)、委托(delegate)和数组。这些类型在
本质上都是面向对象的。
简单值类型
整数类型是对数学中的整数的抽象,但由于受到计算机的存储限制,程序设计语言中的值类型总是要设
置取值范围限制。C#定义了以下 8 种整数类型:
● int:32 位整数,取值范围为-2147483648(-231)~2147483647(231-1)。
● uint:32 位无符号整数(即正整数),取值范围为 0~4294967295(233-1)。
● long:64 位长整数,取值范围为-9223372036854775808(-263)~9223372036854775807(263-1)。
● ulong:64 位无符号整数,取值范围为 0~18446744073709551615(264-1)。
● short:16 位短整数,取值范围为-32768(-215)~32767(215-1)。
● ushort:16 位无符号短整数,取值范围为 0~65535(216-1)。
● sbyte:8 位字节型整数,取值范围为-128(-27)~127(27-1)。
● byte:8 位无符号字节型整数,取值范围为 0~255(28-1)。
例如,下面的代码就先定义了一个整数变量 x,而后将其赋值为 80:
int x;
x=80;
上述两行代码还可以合并为:
int x=80;
如果是同类型的多个变量,C#允许将它们的声明语句简写到一行代码中,例如:
int x1=10,x2,x3=20; //x2 还未被赋值
下面这些语句则是错误的:
uint x=-10; //错误:无符号整数不能取负数
byte y=500; //错误:超出了取值范围
long z;
(z); //错误:z 在被赋值前不能使用
定义变量时应尽量选择最为适合的类型:过短的类型可能不足以表达量的变化范围,过长的类型则会造
成资源浪费。例如,要表示人的年龄使用 byte 类型就足够了,要表示人口的数量则使用 unit 类型比较适合。
C#中使用 char 来表示字符类型。由于使用了 16 为 Unicode 字符集,因此 char 类型不仅包含了基本的 ASCII
字符还可以表示汉字等各国语言符号。注意:单个字符值要用一对单引号括起来;如果使用了双引号,那
么它表示的就是只有一个字符的字符串。例如:
char a=' s ';
char b='人';
string s="人";
对于像单引号、回车符这样的特殊字符,C#中使用加斜杠“\”的转义符来表示。例如:
char a1=' \' '; //a1 表示单引号
char a2=' \\ '; //a2 表示单斜杠
char a3=' \r '; //a3 表示回车符
表 3-1 列出了 C#常见的一些转义符格式。
表 3-1 C#常用转义符
转义符含义转义符含义
\' 单引号\n 换行
\" 双引号\r 回车
\\ 单斜杠\f 换页
\a 报警(Alert) \t 水平制表符
\b 退格(Backspace) \v 垂直制表符
\c 取消(Esc) \0 空字符
char 类型的变量实际上仍以整数方式存储,其取值范围与 ushort 相同,因此一个字符会使用 16 位字节的
内存空间。
C#定义了以下 3 种实数类型。
● float:32 位单精度浮点数类型,取值范围为±×10-45~±×1038。
● double:64 位双精度浮点数类型,取值范围为±×10-324~±×10308。
● decimal:128 位十进制小数类型,取值范围为±×10-28~±×1028。
除了 double 类型之外,float 和 decimal 类型的变量值都应在小数后加上后缀 F 和 M,以便让编译器知道
以何种类型处理这些值,例如:
double x=;
float y=-;