C#程序设计基础_第1页
C#程序设计基础_第2页
C#程序设计基础_第3页
C#程序设计基础_第4页
C#程序设计基础_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章先介绍了标识符和关键字、常量和变量、数据类型、类型转换及装箱和拆箱,然后介绍了表达式和运算符,最后介绍了基本程序控制结构,包括顺序结构、选择结构和循环结构3种形式。2.1标识符和关键字

在C#程序设计语言中,标识符是用于对变量、常量、方法、数组、类、属性等命名的符号。命名标识符必须符合以下规则:必须以字母、下划线“_”或“@”开头,可以包含数字和各种符号。不能使用C#中的关键字。标识符和关键字(续)下面是一些有效的变量名:aB123__45 _567 @for下面是一些无效的变量名:# 12ABC xyz$wv

标识符和关键字(续)

系统定义的具有特定含义的标识符称为关键字,也称为保留字,如continue、for、new、switch、default等。C#语言中的关键字均用小写字母表示。如果一定要将C#中的关键字用作标识符,应使用“@”字符作为前缀,如@continue、@for、@new、@switch。2.2常量和变量

常量和变量是程序设计的基础。变量代表内存中的一个区域,变量的值就是存储于这个区域的数值。常量是在程序中用于代替不变的数字或字符串的有意义的名称,它是一种特殊的变量。常量和变量(续)2.2.1常量

程序中经常包含一些反复出现的常数值,它可能依赖于某些难于记忆或没有明显意义的数值(如PI的值、e的值等)。在这些情况下,使用常量不但可以极大地提高代码的可读性,还会使代码更易维护。在C#中,声明常量的格式为:

const数据类型变量名=值;例如:constintDaysInYear=365;constintWorkDays=250;常量和变量(续)2.2.2变量

变量是程序运行过程中用于存放数据的存储单元,其命名应遵循标识符的命名规则。

1.声明变量变量就像一个盒子(相当于内存),不同的变量中存放着各种不同的数据。在程序中使用变量时必须先指定其数据类型。例如,要在程序中计算整数a、b的和,必须先声明它们的数据类型,代码如下:

inta;intb;常量和变量(续)C#中规定,使用变量前必须对其进行声明,同时规定了其类型和名称。若在程序中使用未声明的变量,编译时会报错。声明变量的格式为:类型变量名;

例如,下面的语句声明了一个整型变量a:

inta;C#中并不要求在声明变量的同时对其赋值,但在声明变量时就对其赋值是程序员应具有的良好习惯。例如,下面这句代码在声明了double型变量的同时将其赋值为2.14:

doubled=2.14;

常量和变量(续)

可以在同一行中声明多个变量,例如,下面这句代码在声明了两个布尔型变量的同时将其分别赋值为true和false:

boolb1=true,b2=false;2.变量的类型

在C#语言中变量主要有7种类型,即静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量。常量和变量(续)

1)静态变量在程序设计中,静态变量用static修饰符来声明。一旦静态变量所属的类被装载,它将一直存在,直到包含该类的程序运行结束。静态变量的初始值就是此变量的类型的默认值。一般在定义静态变量时对其赋值。例如:

publicstaticints=5;

在使用静态变量时,不需要对其所在的类进行实例化。常量和变量(续)

2)实例变量未使用static修饰符声明的变量称为实例变量(非静态变量),例如:

ints=2;

一旦一个类的实例被创建,其实例变量将一直存在,直到所有对此实例的引用都终止,并执行了此实例的析构函数(若有)时为止。类实例变量的初始值是此变量的类型的默认值。常量和变量(续)

3)数组元素数组元素随数组实例的存在而存在。每个数组元素的初始值都是其数组元素类型的默认值。一般应在初始化数组元素时对其赋值。有关数组的内容将会在后面的章节中详细介绍。

4)值参数未用ref或out修饰符声明的参数为值参数。值参数在调用其所属的函数成员(方法、实例构造函数、访问器或运算符)时开始存在,并通过调用中给定的自变量的值初始化,直至返回此函数成员为止。常量和变量(续)

5)引用参数用ref修饰符声明的参数为引用参数。引用参数不创建新的存储位置。在调用函数成员时,传递作为引用参数的变量之前必须已对其赋值。

6)输出参数用out修饰符声明的参数是输出参数。输出参数不创建新的存储位置。在调用函数成员时,作为输出参数的变量在传递之前可以不对其赋值。而函数成员的每个输出参数在此函数成员正常返回前都必须已明确赋值。常量和变量(续)

7)局部变量局部变量声明可以出现在块、for语句、switch语句或using语句中,其生存期为从进入与它关联的块、for语句、switch语句或using语句开始,直到相应语句的执行结束为止。局部变量不会自动被初始化,因此也没有默认值。如果在局部变量声明符之前的文本位置引用此局部变量,则会出现编译时错误。2.3数据类型

任何一个完整的程序都可以看成是一些数据和作用于这些数据上的操作,每一种编程语言都为开发人员提供一些数据类型,不同的语言所提供的数据类型不尽相同。C#语言是一种强类型语言,在程序中用到的变量、表达式等都必须明确数据类型,编译器需要检查数据类型操作的合法性。在C#语言中,数据类型可以分为值类型和引用类型两种。值类型的变量存放的是数据本身,引用类型的变量存储的是数据的引用。数据类型(续)2.3.1值类型在C#中,值类型可以分为以下几种:1.简单类型

C#语言中的简单类型主要有整数类型、布尔类型、字符类型和实数类型。数据类型(续)

1)整数类型

C#语言中的整数类型分为8类,即短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong),其中,ushort、uint和ulong中的“u”是“unsigned”的简写,表示不能在这些类型的变量中存储负数。不同的整数类型用于存储不同范围的数值,占用的内存空间大小也不同。数据类型(续)

2)布尔类型布尔类型只有两种取值,即true(真)和false(假)。在编写具有判断条件语句的应用程序时,布尔类型的变量有着非常重要的作用。

3)字符类型

C#的字符类型的值集对应Unicode字符集。将变量定义为字符类型的的语法格式如下:

charmyChar=‘C’;//把‘C’这个字符赋值给变量myChar

也可以把转义字符赋值给字符类型的变量。数据类型(续)

4)实数类型在C#中,实数类型分为单精度(float)、双精度(double)和十进制(decimal)类型,它们的差别在于取值范围和精度不同。实数类型的运算速度大大低于对整数类型,因此,采用双精度计算的结果将更为精确,而在对精度要求不高时可以采用单精度型。十进制类型主要是为了方便在金融方面的计算。当定义一个decimal类型的变量并对其赋值时,一般使用m后缀表示此变量为十进制类型,例如:

Decimalde=1.38m;数据类型(续)2.结构类型

结构类型可以声明构造函数、常数、字段、方法、属性、索引、操作符等。结构的功能看起来像一个类,其区别在于结构是值类型,而类是引用类型。声明结构类型的语法格式如下:

StructmyColor{publicintRed;publicintGreen;publicintBlue;}数据类型(续)3.枚举类型枚举类型也称为枚举,是一种具有命名常数的类型。例如,定义一个变量,其值表示一周中的一天,即此变量只能存储7个有意义的值,此时可以将这个变量定义为枚举类型。enum关键字用于声明枚举类型,其语法格式如下:

enum

枚举类型名[:基础类型]{由逗号分隔的枚举元素};数据类型(续)

2.3.2引用类型

C#中的引用类型与C++中的类似,可以将它们视为类型安全的指针。引用类型的值是对此类型的对象的引用,其值可以是Null,表示它当前不引用或不指向任何对象。C#中的引用类型有4种,即类、数组、代理和接口,相关知识将在以后的章节中详细介绍。2.4类型转换

在程序设计中,常会遇到数据类型转换的问题。例如,使用int类型的数据与double类型的数据进行四则运算,就需要进行数据类型的转换。C#中的数据类型转换方法主要有隐式转换、显示转换(强制转换)、使用ToString()方法和使用Convert类。类型转换(续)2.4.1隐式转换隐式转换又称自动类型转换,若两种数据类型是兼容的或者目标类型的取值范围大于源类型时,就可以使用隐式转换。2.4.2显示转换显示类型转换是通过指令使编译器将一种数据类型转换为另一种数据类型。显示转换的缺点是产生的结果可能不够精确。显示类型转换的语法格式如下:

(目标类型)变量或表达式;类型转换(续)2.4.3ToString方法

ToString方法主要用于将一种数据类型转化为字符串类型。字符串是用双引号括起来的字符序列,如"VisualC#"就是一个字符串。下面是一个把int类型的变量转换为string类型的例子:intI=200;strings=I.ToString();2.4.4Convert类在C#中可以通过使用Convert类提供的方法进行显式转换。2.5装箱与拆箱

装箱是将值类型转换为引用类型,拆箱是将引用类型转换为值类型。利用装箱和拆箱功能,就可以使值类型的值与引用类型的值相互转换。装箱操作可以隐式进行,但拆箱操作必须是显式的。拆箱过程分成两步:首先检查这个类的实例是否为给定的值类型的装箱值,然后将这个数值复制给值类型的变量。2.6表达式与运算符

程序中对数据的操作实际上就是数据的运算。表达式和运算符构成了程序中完成各种运算任务的语句,这些语句是程序设计的基础。表达式与运算符(续)2.6.1表达式表达式由操作数和运算符构成,其中操作数可以是常量、变量和属性等,运算符用于指示对操作数进行什么样的运算。最简单的表达式是变量和常量。在C#中可以通过使用运算符、方法调用以及类型转换等建立复杂的表达式。例如,以下是不同形式的表达式:

X3.1415926System.out.println(“字符串长度:"+m)x*yx=1.5表达式与运算符(续)2.6.2运算符

运算符是用来完成一个动作的特定语言的语法记号。最常用的运算符是加、减、乘和除。每一种语言都有运算符,并且严格定义了它们使用时的语法或规则,C#也不例外。C#运算符主要有赋值运算符、递增/递减运算符、算术运算符、关系运算符、逻辑运算符和位运算符等。表达式与运算符(续)1.赋值运算符赋值运算符主要用来对变量进行赋值操作,包括简单赋值运算符(=)和复合赋值运算符(+=、-=、*=、/=、%=、=、|=、^=、>>=和<<=)。复合赋值运算符对左操作数与右操作数进行相应的运算,然后把结果赋给左操作数。例如:x+=6;//等价于x=x+6x*=16;//等价于x=x*16表达式与运算符(续)2.递增/递减运算符(1)递增运算符(++):用于对操作数进行加1运算。例如,i++等价于i=i+1。(2)递减运算符(--):用于对操作数进行减1运算。例如,i--等价于i=i-1。3.算术运算符算术运算符用来执行常规的算术运算,包括+(加)、-(减)、*(乘)、/(除)和%(模,即求余数)。表达式与运算符(续)4.关系运算符关系运算符主要用于进行表达式的比较操作,包括=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)和<=(小于等于)。这些运算符都是二元运算符,运算结果为布尔值true或false。5.逻辑运算符逻辑运算符用来对两个布尔类型的操作数进行逻辑运算,运算的结果也是布尔类型。C#语言中的逻辑运算符有&&(逻辑与)、||(逻辑或)和!(逻辑非)等。表达式与运算符(续)6.位运算符位运算符用来按二进制位对数据进行运算,包括&(与)、|(或)、^(异或)、~(取反)、<<(左移)和>>(右移)。其中取反是一元运算符,其他操作符都是二元运算符。位运算的操作数为整型数或者是可以转换为整型的任何其他数据类型的数据。表达式与运算符(续)

1)&(与)运算二进制位进行与运算的规则为:

0&0=00&1=01&0=01&1=1表达式与运算符(续)

2)|(或)运算二进制位进行或运算的规则为:

0|0=00|1=11|0=11|1=1表达式与运算符(续)

3)^(异或)运算二进制位进行异或运算的规则为:

0^0=00^1=11^0=11^1=0表达式与运算符(续)

4)~(取反)运算取反运算对操作数的每一位取反,如对00001010取反的结果为11110101。

5)移位运算移位运算包括左移运算和右移运算。左移运算将操作数按位左移,高位被丢弃,低位顺序补0。例如,10的二进制表示为00001010,左移一位为00010100,即20;左移两位为00101000,即40。表达式与运算符(续)

进行右移运算时,如果操作数是int或long型,则低位被丢弃,其他各位按顺序依次右移;如果操作数是uint或ulong型,则低位将被丢弃,其他各位顺序依次右移高位设为0。如果操作数是非负数,则最高位设为零;如果操作数为负数,则最高位设为1。表达式与运算符(续)2.6.3运算符优先级当一个表达式含有多个运算符时,C#编译器会按照运算符的优先级确定运算顺序,优先级高的运算符在优先级低的运算符前求值,优先级相同的自左向右求值。C#中各种运算符的优先级如书表2-6所示。2.7程序流程控制

在C#中任何程序流程均可以通过使用顺序结构、选择结构和循环结构实现,这3种控制结构构成了结构化程序设计的框架。2.7.1顺序结构顺序结构的程序按编写顺序依次执行的,这一过程称为顺序执行。顺序结构的代码通常以程序块作为独立的单位,C#语言程序块是用一对大括号“{}”括起来的任意多条简单语句,程序语句可以嵌套使用。程序流程控制(续)2.7.2选择结构选择结构是根据布尔表达式的值采取不同的动作,这些布尔表达式担当了执行不同路径的开关。

C#语言提供了两种选择结构,即if语句和switch语句。1.if语句

if语句是最常用的选择语句,它是基于布尔表达式的值来进行选择执行的语句,主要有以下几种基本形式:程序流程控制(续)1)简单if语句简单if语句的语法格式为:

if(布尔表达式)语句块如果布尔表达式的值为真(true),则执行if后面的内嵌语句块,为假(false)则执行if语句的后继语句块。2)if…else语句

if…else语句的语法格式为:

if(布尔表达式)语句块1else语句块2

如果布尔表达式的值为真,则执行内嵌语句1,否则执行内嵌语句2。程序流程控制(续)3)嵌套的if语句如果程序的逻辑判断关系比较复杂,通常还可以使用嵌套的条件判断语句。嵌套的if语句的语法格式如下:if(布尔表达式1){if(布尔表达式2)语句块1else语句块2}else{if(布尔表达式3)语句块3else语句块4}

程序流程控制(续)C#语言在执行嵌套的if语句时,每一个else与离它最近且没有其他else与之对应的if相匹配。2.switch语句

switch语句根据一个控制表达式的值选择一个内嵌语句的分支来执行,语法格式为:程序流程控制(续)switch(控制表达式){case常量表达式1:语句1break;case常量表达式2:语句2break;……

case常量表达式n:语句nbreak;default:语句n+1;}

如果控制表达式的值与某一个case对应的常量表达式的值相等,就执行此case后面的语句,若与所有的case中的常量表达式的值都不匹配,就执行default后面的语句。C#语言规定switch语句中的每一个case标签后面必须使用break语句或goto语句跳转,不允许从一个case标签贯穿到另一个case标签。

程序流程控制(续)2.7.3循环结构循环语句用于实现一个程序模块的重复执行。C#语言提供了4种循环控制语句,包括while语句、do…while语句、for语句和foreach语句。其中while语句和do…while语句可以事先不知道循环的次数,属于不确定循环。在c#中,可以使用break和continue语句跳出循环语句,使程序设计更为灵活。程序流程控制(续)1.While语句

While语句是最常用的循环结构之一,可以用它模拟其他循环结构。while语句的语法格式如下:

while(布尔表达式)语句块其执行顺序为:(1)计算布尔表达式的值。(2)当布尔表达式的值为真时,执行while语句中的内嵌语句,然后程序转至第1步。(3)当布尔表达式的值为假时,结束循环。程序流程控制(续)2.do…while语句

while语句的条件检查先于循环中的其他语句执行,而do…while语句的条件检查则位于循环体语句序列的尾部,因此,其循环体至少会执行一次,即使循环条件在第一次检查时就为假也是如此。do…while循环的语法格式为:

do{循环体语句块}while(布尔表达式)其执行顺序如下:(1)执行循环体语句一次。(2)计算布尔表达式的值,为真则程序转至第1步,为假则结束循环程序流程控制(续)3.for语句

C#语言中,在事先知道循环次数的情况下,使用for语句比较方便。for语句使用计数步进循环,计数变量跟踪循环的重复次数,循环从计数器的初值开始,直到预定的结束值终止。根据每次循环时计数器的变化(增或减),又可以将for语句分为增量for语句和减量for语句。程序流程控制(续)

for语句的语法格式为:for(表达式1;表达式2;表达式3){语句}

其中,表达式1对循环控制变量进行初始化,循环控制变量可以有一个或多个,若有多个则用逗号隔开;表达式2为循环控制条件;表达式3按规律改变循环控制变量的值。这3个表达式都是可选的,缺省某个表达式时,其后的分号“;”不能省略,如3个表达式都缺省的情况如下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论