




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章概述主要内容:
.NET平台介绍;C#语言的特点及其开发环境的介绍。目的要求:了解.NET平台理解并掌握.NETFramework的内容及其工作原理了解C#语言的特点熟悉C#集成开发环境。重点难点:
.NETFramework的工作原理;C#集成开发环境1.1概述1.1.1什么是.NET
.NET首先是一个环境,是一个“不再关注单个网站、单个设备与因特网相连,而是要让所有的计算机群、相关设备和服务商协同工作”的网络环境。
1.1.2.NET的组成
1.Window.NETWindows.NET是Microsoft.NET的基础平台,主要是一些在手机、微机和服务器群集上的操作系统(如WindowsXP/2000/CE),另外,还包括各种应用软件服务.
2..NETEnterpriseServers.NETEnterpriseServers是Microsoft公司推出的进行企业集成和管理所有基于Web的各种服务器应用的系列产品。它的方要目标是帮助企业快速集成并构架电子商务及其应用系统。1.1.2.NET的组成
3..NETFramework.NETFramework是Microsoft.NET的核心部分,是创建、部署和运行Web服务及其他应用程序的一个环境。.NETFramework是一个多语言组件开发和执行环境,所以在开发软件时,不论使用哪一种程序语言或操作系统,都会享有一致的软件开发方式(包含相同的类库)。从层次结构上看,.NETFramework主要由两部分组成:公共语言运行时(CLR:CommonLanguageRuntime)和基础类库(BasicClassLibray,BCL)。1.1.2.NET的组成
.NETFramework.NETFramework架构图1.1.2
.NETFramework
公共语言运行时(CLR)
是.NET框架应用程序的执行引擎。在组件运行过程中,运行时负责管理内存分配、启动或删除线程和进程、实施安全性策略,同时满足当前组件对其他组件的需求。在开发阶段,运行时的自动化程度大为提高(比如可自动执行内存管理),因而开发人员的工作变得非常轻松,尤其是映射功能将锐减开发人员将业务逻辑程序转化成可复用组件的代码编写量。1.1.2.NETFramework
基础类库
.NET框架的基础类库可以简单地理解为预先编写好的程序代码,这些代码包含编程中常用的数据及对这些数据的操作,在编程中可以使用任何一种编程语言来调用这些代码而加快程序开发的步伐和效率。1.1.2.NETFramework
.NET开发技术
在开发技术方面,.NETFramework提供了ADO.NET(数据库访问技术)、ASP.NET(网络应用开发技术)技术和WindowsForm(Windows编程技术)技术。
1.1.2.NETFramework
.NET开发语言.NET是多语言的开发平台,.NET开发语言指的是符合.NETFramework中定义的通用语言规范(CLS)的程序语言。目前,微软公司提供VB.NET、C#、C++等,其他厂商也提供了很多能够被.NET支持的语言,如APL、COBOL、Pascal等。
1.1.2.NET的组成
4.MicrosoftVisualStudio.NET
VisualStudio.NET是.NET的核心开发工具。它为包括微软提供的各种开发语言在内的所有的编程语言(如C#)提供了简单统一的代码编辑器,包括XML编辑器、HTML编辑器等。5..NETWeb服务构件
.NETWeb服务构件提供一系列高度分布、可编程的公用性网络服务,如身份认证、发送信息、系统化存储、日历和目录等。.NETWeb服务构件可以从支持SOAP的任何平台上访问。1.1.3.NET程序的编译与运行源代码MSIL代码编译目标代码JIT编译器.NET应用程序的编译与运行过程MSIL代码是微软中间语言代码JIT(Just-In-Time)把MSIL编译为专用于某种操作系统和目标机器结构的目标代码,只有这样,操作系统才能执行应用程序。运行1.2C#语言
C#语言是专门为.NET应用而开发的语言,与.NETFramework完美结合,在.NET类库的支持下,C#能够全面地体现.NETFramework的各种优点。简单彻底的面向对象设计与Web应用紧密结合强大的安全性机制完善的错误、异常处理机制灵活的版本处理技术兼容性
1.3C#集成开发环境菜单栏工具栏VisualStudio2005主窗口定制成开发C#应用程序的开发环境
使用【工具】|【导入和导出设置】命令,打开“导入和导出设置”对话框,如图所示,选择“重置所有设置“单选项。定制成开发C#应用程序的开发环境
单击【下一步】按钮,弹出新的对话框,选择是否要将当前的设置保存,如图所示。如果对设置进行了设置,就保存设置,否则就选择否。
定制成开发C#应用程序的开发环境
单击【下一步】按钮,在弹出的对话框中选择“VisualC#开发设置”选项。单击【完成】按钮,使设置生效。1.3.2C#集成开发环境介绍工具箱:工具箱包含了建立应用程序的各种控件以及非图形化的组件
自动隐藏窗口设置1.3.2C#集成开发环境介绍
解决方案资源管理器:
在C#中,开发的每一个应用程序叫解决方案。每一个解决方案可以包含一个或多个项目。一个项目通常是一个完整的程序模块,一个项目还可以有多个子项。查看类关系图查看设计器查看代码1.3.2C#集成开发环境介绍属性窗口:在应用程序设计时,属性窗口用于显示和设置所选定的控件或者窗体等对象的属性。
事件按钮对象列表选项按钮区属性或事件列表框属性按钮按字母排序按分类排序1.3.2C#集成开发环境介绍窗体设计器:“窗体设计器”窗口用来设计应用程序的界面。用户可以从工具箱中把各个控件添加到窗体上,并安排它们的布局。单击【智能三角】按钮后的小窗口1.3.2C#集成开发环境介绍代码编辑窗口:此窗口是专门用来进行代码设计的窗口,各种事件过程、模块和类等源程序代码的编写和修改均在此窗口中进行。
对象列表框事件、方法列表框1.3.2C#集成开发环境介绍动态帮助窗口:动态帮助窗口是一个与上下文相关的帮助系统。当单击不同的控件或者将光标在代码的不同关键字上移动时,动态帮助窗口中显示的内容将会随之发生变化,这对于初学者来说,是非常有用的功能。第2章C#语法基础主要内容:
控制台应用程序的开发步骤、C#程序结构、控制应用程序的输入/输出、简单和复杂数据类型、变量与常量、运算符与表达式、程序的流程控制目的要求:掌握控制台应用程序的开发步骤、了解C#程序的结构、掌握控制应用程序的输入/输出方法、理解并掌握简单和复杂数据类型的声明及访问方法、熟练掌握程序的流程控制方法重点难点:
程序的流程控制2.1控制台应用程序
2.1.1创建第一个控制台应用程序开发控制台应用程序的一般步骤为:创建项目编写代码编译执行程序保存程序第一步,创建项目(1)启动VisualStudio2005(以后均简称为VS2005),进入VS2005集成开发环境
(2)新建项目:可以通过三种方法新建项目方法一:在VS2005集成开发环境下执行菜单的【文件】|【新建】|【项目】的命令。方法二:单击工具栏中的【新建项目】按钮,如图2-1所示。方法三:在起始页“最近的项目”区域“创建”选项中单击“项目”
创建项目“新建项目”对话框
1.选择项目类型2.选择编程模版3.设定项目名称4.选择项目保存位置5.确定第二步,编写代码程序代码编辑窗格智能感知功能方法提示
第四步,编译执行程序错误列表窗口第五步,保存程序通常只要执行启动命令编译运行程序,程序即被保存,而不需要再专门进行保存操作。如果程序被修改,并且没有被生成或运行,在关闭VS2005环境或关闭解决方案时,会询问是否保存更改。如果只是需要对程序进行保存,则可以单击工具栏中的【全部保存】按钮,或选择【文件】|【全部保存】命令。项目中的文件说明如下:bin文件夹:包含debug子目录,含有HelloWorld.exe文件、HelloWorld.pdb文件和HelloWorld.vshost.exe文件。.exe文件是程序被成功编译后生成的可执行文件,.pdb文件包含完整的调试信息(包含函数原型),.vshost.exe文件是宿主进程文件,宿主进程是VS.NET2005中的一项功能,它创建一个应用程序域并将调试器与应用程序关联起来,提高调试性能,支持部分信任调试并支持设计时表达式计算。obj文件夹:包含debug子目录,含有编译过程中生成的中间代码。Properties文件夹:包含AssemblyInfo.cs文件,它是在创建项目过程中自动添加的,包含程序集属性的设置。Program.cs文件:应用程序文件,包含应用程序代码。HelloWorld.csproj文件:项目文件。HelloWorld.sln文件:解决方案文件。2.1.2C#程序结构分析
1.命名空间(1)系统命名空间系统命名空间使用using导入。格式为:
using系统命名空间名称;(2)用户自定义命名空间用户自定义命名空间使用namespace声明。格式为:
namespace项目名称2.类和方法C#是完全面向对象的语言,它要求必须用类来组织程序中的每一个元素,所以程序中除using…行之外的任何程序成分都必须写在类中。class是创建类的关键字“Main”方法是应用程序的入口,并实现类“Program”的特定功能。C#要求每个程序有并且只能有一个“Main”方法,用来指示应用程序是从这里启动的。缺少“Main”方法或“Main”方法多于一个,程序都将产生错误。
3.语句C#中的语句必须用分号“;”结束。可以在一行中书写多条语句,也可以将一条语句书写在多行上。当语句中包含不同层次的内容时,C#用点“.”操作符表示所属关系。4.大括号
在C#中,括号“{”和“}”是一种范围标志,是组织代码的一种方式,用于标识应用程序中逻辑上有紧密联系的一段代码的开始与结束。5.注释在C#中,注释基本有两种:(1)单行注释。以“//”开始,不能换行,该方式只对注释所在行生效。(2)多行注释。在第一行使用“/﹡”表示注释开始,在最后一行使用“﹡/”表示注释结束,中间可以换行。usingSystem;namespaceHelloWorld{classProgram{staticvoidMain(string[]args){Console.WriteLine("欢迎使用C#!");Console.ReadLine();}}}通过以上分析,可知C#程序的基本结构如下://导入系统命名空间//自定义命名空间//定义类/*Main方法是程序的入口。其中static表示Main()方法是一个静态方法,void表示该方法没有返回值,args是Main()方法的参数,string[]为该参数的数据类型。*///输出语句,输出"欢迎使用C#!"//输入语句,放在程序最后可使程序运行窗口暂停。2.1.3控制台程序的输入/输出1.输入控制台的输入功能是通过Console类的Read()方法和ReadLine()方法实现的。二者的区别为:(1)Read()方法读取键盘上输入的第一个字符;
ReadLine()方法读取出键盘输入的一行字符,以用户按回车键作为输入结束的标志。(2)Read()方法得到的数据类型为整型,即输入字符所对应的整数值;
ReadLine()方法得到的数据类型为字符串型,即输入的字符串本身。例如:从键盘输入字母a,则i的值为97。
inti=Console.Read();例如:如果想得到输入的字符本身,必须使用此方法。
chari=(char)Console.Read();例如:从键盘输入字符串abcd,则str的值为abcd。
stringstr=Console.ReadLine();2.输出将信息输出到控制台是通过Console类的Write()方法和WriteLine()方法实现的。二者的区别在于:前者输出后不换行,后者输出后换行。例如:
Console.Write(“abcd”);//输出后光标不换行
Console.WriteLine(“abcd”);//输出后光标换行2.2简单数据类型2.2.1标识符标识符和关键字是C#语言的两种重要词法记号。1.标识符标识符(identifier)是用来标识类名、变量名、类型名、文件名等有效字符序列。简单地说,它就是一个名字。C#标识符命名规则为:(1)使用字母或下划线开头。(2)由字母、数字、下划线(_)和美元符号($)组成,不能含有空格、标点符号和运算符。(3)C#语言对字母大、小写敏感,即在C#中同一个字母的大写和小写是被当作两个不同的字符对待的。例如:SCORE、Score、score就是三个不同的名称。(4)标识符的命名最好与实际的应用联系起来,这样有助于程序的理解,做到“见名知意”。(5)标识符不能与关键字同名。2.关键字
关键字是C#中有特殊意义的字符串,也叫保留字。在VS2005环境的代码视图中,关键字默认以蓝色显示。
注意:C#规定关键字不允许当作标识符来使用,除非给它们加一个“﹫”前缀。当然,在C#语言中,也可以将“﹫”前缀用于非关键字的标识符定义中,但是从代码书写样式考虑,强烈建议不要这样做。例如:
using//非法标识符,因为using是关键字,
﹫using//合法标识符
﹫name//合法标识符,但与name是同名标识符2.2.2简单数据类型
简单数据类型是系统予定义的数据类型,也叫内置数据类型。根据数据的性质可分为数值型、字符型、逻辑型、对象型四类。
1.数值型
数值型包括整数类型和实数类型两种,其中整数类型数据不带小数,实数类型带小数。(1)整数类型数据类型类型标识符特征取值范围有符号字节型sbyte有符号8位整数-128~127字节型byte无符号8位整数0~255短整型short有符号16位整数-32768~32767无符号短整型ushort无符号16位整数0~65535整型int有符号32位整数-2147483648~2147483647无符号整型uint无符号32位整数0~4294967295长整型long有符号64位整数-9223372036854775808~9223372036854775807无符号长整型ulong无符号64位整数0~18446711073709551615(2)实数类型数据类型类型标识符精度取值范围单精度浮点型float7位数±1.5×10-45~3.4×1038双精度浮点型double15到16位数±5.0×10-324~1.7×10308十进制型decimal29位数±1.0×10-28~7.9×10282.字符型(1)Unicode字符集Unicode是一种重要的通用字符编码标准,它是继美国信息交换标准码(ASCII:AmericanStandardCodeforInformationInterchange)后的一种新型字符编码。Unicode使用全16位字符集。这使得Unicode能够表示世界上所有的书写语言中可能用于计算机通讯的字符、象形文字和其它符号。C#支持Unicode字符集。(2)字符型C#中以一对单引号括起来的单个字符就是字符型数据,其类型标识符为char,所以又称为char类型。如’a’、’1’都是字符型数据。字符型数据在内存中是用无符号16位整数表示的,占用2个字节,但它在意义上是代表Unicode字符集中的一个字符。所以虽然字符型(char)数据的表示形式与短整型(ushort)相同,但它们的真正含义却是不同的,短整型代表的是整数本身,而字符型代表的则是一个字符。3.布尔型布尔型数据用于表示逻辑真和逻辑假,其类型标识符是bool,数据范围是“true”(真)和“falae”(假),占用1个字节。布尔型的值“true”和“false”是关键字。布尔型主要应用于流程控制。4.对象型对象型可以表示任何类型,其类型标识符是object,占用字节视具体表示的数据类型而定。对象型是所有其它类型的最终基类。C#中的每种类型都是直接或间接从对象类型(object)派生的。2.2.3类型转换1.隐式转换隐式转换的基本原则是允许数值范围小的类型向数值范围大的类型转换,允许无符号整数类型向有符号整数类型转换。在进行隐式转换时需要注意的:(1)从int,uint或long到float,从long到double的转换可能会导致精度下降,但决不会引起数量上的丢失,其他的隐式转换则不会有任何信息丢失。(2)C#允许将char类型的数据隐式转换为数值范围大于短整型(含短整型)的数值类型。系统之所以会允许char类型的数据进行这种转换,是因为char类型的数据在内存中实质是保存为整形数据的,只是从意义上代表的是Unicode字符集中的一个字符。例intx=1234;//x为int类型;例longy=x;//将x的值读出,隐式转换为long类型后,再赋给long型的变量y。例charletter=’A’;//字符型变量letter的值为大写字母“A”;例intnum=32+letter;//读取letter的值,隐式转换为整数
65,与32相加后的结果赋给num.2.显式转换
显式转换也叫强制转换,它需要用户明确地指定转换类型,一般是在无法进行隐式转换的时候使用。其格式如下:
(数据类型名称)数据
例如:将double类型的5.17转换为int类型,转换后的值为5。(int)5.17;3.数据类型转换的方法(1)Parse方法
Parse方法是将特定格式的字符串转换为数值类型。转换格式为:数值类型名称.Parse(字符串型表达式)注意:“字符串表达式”的值必须严格符合“数据类型名称”对数值格式的要求。例intx=int.Parse(“123”);//符合整型格式要求,转换成功例inty=int.Parse(“123.5”);//不符合整型格式要求,转换失败(2)ToString方法ToString方法是将其他数据类型转换为字符串类型。转换格式为:变量名称.ToString()例如:
intx=123;strings=x.ToString();//将整型变量x的值读出,转换为字符串“123”,然后赋值给s
2.3变量与常量2.3.1变量
变量是程序运行过程中用于存放数据的存储单元。在程序运行过程中,其值是可以改变的。1.变量的声明声明变量最简单的格式为:类型标识符变量名1,变量名2,变量名3,…;例intnumber;//声明一个整型变量,变量名为number。例loatx,y,z;//同时声明3个单精度浮点型变量,变量名分别为
x,y,z,变量名之间用逗号间隔。2.变量的赋值
格式如下:变量名=表达式;变量赋值的意义:首先计算表达式的值,然后将这个值赋给变量。例如:intscore1,score2;//定义两个int型的变量score1,score2。doubleaverage;//定义一个double型变量average。score1=90;//为变量score1赋一个常数90。score2=95;//为变量score2赋一个常数95。average=(score1+score2)/2;/*先计算赋值号右侧表达式的值,然后再为变量average赋值,其值为92.5。*/
在程序中,可以给一个变量多次赋值。变量的当前值等于最后一次给变量所赋的值。例如:intnumber;number=0;//此时number的值为0。number=10;//此时number的值为10。number=number+20;//此时number的值为30。
在程序中,也可以同时为多个变量赋相同的值。例如:inta,b,c;a=b=c=32;//a,b,c三个变量的值都为32。
注意:(1)在对变量赋值时,表达式的值的类型必须同变量的类型相同。例如:stringname;intscore;name=”张三”;//赋值成功,因为“=”左右两侧数据类型相同。score=”李逵”//赋值失败,不能把字符串赋值给int型变量score。(2)变量必须先赋值后使用。例如:intsocre1,score2;score1=score2;//赋值失败,因为score2没有赋值就被使用了3.变量的初始化在声明变量的同时对变量进行赋值,叫做变量的初始化。其格式为:类型标识符变量名=表达式;例如:
intradius=16;/*定义一个int类型变量radius,并将其赋予初始值为16。*/2.3.2常量
常量是在程序运行过程中其值保持不变的量。常量的数据类型可以对应大多数基本数据类型。常量有直接常量和符号常量两种。(1)直接常量:即数据值本身整型常量实型常量字符常量字符串常量布尔常量
(1)整型常量
整型常量即整数,可以用十进制、八进制和十六进制三种形式来表示。整型常量以“0”开头的代表八进制,以“0x”或者“0X”开头的代表十六进制,否则,都被认为是十进制。例如:390//十进制037//八进制0X78A3//十六进制
三种进制形式的整型常量均可以带正负号。例如:-123、-0123、-0X123等。(2)实型常量实型常量即带小数的数值,只能用十进制表示,有两种表示形式:小数形式和指数形式。小数形式:指数形式:
即通常人们的书写形式,由整数和小数两部分组成。其中,整数部分可以省略,但小数部分不能省略。例如:5.6,0.9,6.0,其中0.9也可以省略整数部分写成.9的形式,但6.0则不能省略小数部分写成6.的形式。也叫科学记数,由底数、字母E(或e)和指数三部分组成。例如,123e5或者123E5都表示123×105。实型常量默认为双精度(double)类型。例如:123.5默认为double类型的常量。若想表示单精度(float)或者十进制(decimal)型,则必须在常量后面加相应的后缀。float型常量后缀是F(或者f),dicimal型后缀是M(或者m),double型后缀是D(或者d)。例如:137f //代表float类型,数值为137.0137.2m //代表decimal类型,数值为137.2137.2 //没有后缀,代表double类型,数值为137.2137.2D //代表double类型,数值为137.2(3)字符常量字符常量的数据类型是char。通常情况下,它是指用单引号括起来的一个字符。例如:‘A’,‘2’,‘#’都是字符型常量。在表示一个字符常数时,单引号内的有效字符必须且只能有一个,并且不能是单引号或者反斜杠(\)等。为了表示单引号和反斜杠等特殊的字符常数,C#提供了转义符,在需要表示这些特殊常数的地方,可以使用这转义符来替代这些特殊的字符。常用的转义符如下表所示。转义符字符名称转义符字符名称\’单引号\f换页\”双引号\n新的一行\\反斜杠\r换行并移到最前面\0空字符\t水平方向的Tab\a发出一个警告\v垂直方向的Tab\b倒退一个字符(4)字符串常量字符串常量的数据类型是string,它指的是用双引号括起来的一串字符。例如:“欢迎使用C#!”、“hello”都是字符串常量。需要注意的是:即使双引号内的有效字符是一个字符,它也是字符串常量,而不能当作字符常量看待。例1:“A”和‘A’,前者是字符串常量,后者是字符常量。例2:charch=”A”;//赋值失败,无法将string类型转换为char型。字符串中的字符个数可以为0,即可以是空串。例3:“”也为合法字符串。标识字符串的两个双引号通常必须在程序的同一行,如果需要在字符串中插入换行符,应用使用转义字符’\n’。例4:“Hello!\nHowareyou?”如果希望字符串常量中出现的“\”号不被解释成转义符,则只需要在该字符串的起始双引号前加上一个“@”符号。例5:@”c:\C#\HelloWorld”(5)布尔常量布尔常量即布尔值本身。布尔值true(真)和false(假)。2.符号常量符号常量使用const关键字定义。格式为:const类型名称常量名=常量表达式;常量定义中,“常量表达式”要求不能包含变量及函数等值会发生变化的内容,可以包含其它已定义的常量。例如:constintmax=10;//合法intnum=10;constdoublePI=3.14;//合法constdoublemaxArea1=PI*max*max;//合法,表达式包含两个已定义常量constdoublemaxArea2=PI*num*numx;//不合法,表达式中包含变量由于符号常量代表的是一个不变的值,所以符号常量不能出现在“=”的左侧,因为这样意味着为符号常量赋值,即修改符号常量的值。2.4运算符与表达式
运算符用于对操作数进行特定的运算。表达式是由运算符和操作数组成的式子。最简单的表达式是单个常量或变量。表达式的计算结果是表达式的返回值。使用不同的运算符连接运算对象,其返回值的类型也是不同的。2.4.1运算符与表达式类型根据操作数的个数,运算符可以分为一元运算符、二元运算符与三元运算符。根据运算的类型,运算符又可以分为算术运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符等。1.算术运算符与算术表达式C#算术运算符表运算符意义操作数数目示例+取正或加法1或2+2、12+53+i-取负或减法1或2-9、a-b*乘法2i*j、8*6/除法210/5、i/j%模(也可称为取余运算符。)2i%j、10%6++自增运算1++i、i++--自减运算1--i、i--说明:1、除法运算符来说,如果相除的两个数都是整型,结果也应该为整型,小数部分会被截去。即使被赋值的是实型变量,两个整型数相除,也不会保留相除结果的小数部分。2、自增运算符和自减运算符既可以放在变量的前面(前缀)也可以放在变量的后面(后缀)。但是它们所表示的意义确是完全不同的。前缀表示先自增或自减,后进行其它运算;后缀表示先进行其它计算,后自增或自减。2.赋值运算符与赋值表达式赋值运算符包括简单赋值运算符和复合赋值运算符。“=”是简单赋值运算符;复合赋值运算符是由简单赋值运算符与其他运算符结合在一起的赋值运算符,如“*=”、“/=”、“-=”、“+=”、“%=”等。复合赋值运算符的意义在于将左操作数与右操作数先进行“其他运算符”要求的运算,然后再将运算结果赋值给左操作数。例如:x+=2等效于x=x+2。在C#中,可以对变量进行连续赋值。例如:x=y=z=3表示x,y,z三个变量同时被赋予整数3。3.关系运算符与关系表达式
关系运算符符号描述举例>大于x>10<小于x<10>=大于等于x>=y+10<=小于等于x<x+y==等于x==y%2!=不等于x!=y+2说明:关系运算符两边的操作对象如果是数值类型的,是比较两个数的大小。如果是字符型的,则比较两个字符的Unicode编码的大小。如果是字符串型的,则只能使用相等“==”和不等“!=”两种运算符,相等运算符是指被比较的两个字符串的字符个数和相应位置上的字符完全相同,运算结果为true,否则运算结果为false;不等运算是指两个字符串个数不等或者对应位置上的字符至少有一对不等时,运算结果为true,否则运算结果为false。关系运算也可以和算术运算混合起来使用,此时,关系运算符两边的运算对象可以是算术表达式的值,在C#中,是先求表达式的值,然后再将这些值做关系运算。举例1:inta=3,b=2;charx=’a’,y=’b’;stringstr1=”abcd”,str2=”abc”;booli,c,s;i=a>b;//先进行变量a和变量b的比较,再将比较结果赋值给i。c=x>y;/*字符a的Unicode编码小于b的Unicode编码,所以关系表达式x>y的结果为false;*/s=str1==str2;/*字符串str1和str2的字符个数不同,所以比较结果为false,s的值为false。*/举例2:5+6>9-8//结果是true4.逻辑运算符与逻辑表达式逻辑运算符的操作数是布尔类型,运算结果也是布尔类型。在C#中,最常用的逻辑运算符是!(非),&&(与)、||(或)。非运算是一元运算符,是求布尔值相反值的运算,如果原值为真,非运算的结果为假,否则为真。与运算的含义是当两个操作数的布尔值都为true时,运算结果才为true,即所谓同真为真。或运算的含义是当两个操作数的布尔值中有一个为true时,运算结果就为true,只有在两个操作数的布尔均为false时,运算结果才为false,即所谓同假为假。当需要多个判定条件时,可以使用逻辑运算符把关系表达式连接起来。如果表达式中同时存在多个逻辑运算符,逻辑非的优先级最高,逻辑与的优先级高于逻辑或。
逻辑运算规律操作数x的值操作数y的值!xx&&yx||yfalsefalsetruefalsefalsefalsetruetruefalsetruetruefalsefalsefalsetruetruetruefalsetruetrue5.条件运算符与条件表达式条件运算符是C#中惟一的三元运算符,由“?”和“:”组成。其一般格式为:布尔类型表达式?表达式1:表达式2说明:凡是表达式的值的类型为布尔型的均可称为布尔类型表达式,如关系表达式和逻辑表达式等。在进行条件运算时,首先判定“?”前的布尔类型表达式的值,如果为true,则条件运算表达式的值等于表达式1的值;如果为false,则条件运算表达式的值等于表达式2的值。举例:
5>7?19:9//由于5>7的值为false,所以整个表达式的值为9。2.4.2运算符的优先级从表中可以看出运算符的优先级有以下特点:1.一元运算符的优先级高于二元和三元运算符。2.不同种类的运算符的优先级有高低之分。算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符,逻辑运算符的优先级高于条件运算符,条件运算符的优先级高于赋值运算符。3.有些同类运算符优先级也有高低之分。在算术运算符中,乘、除、求余的优先级高于加、减;在关系运算符中,小于、大于、小于等于、大于等于的优先级高于相等与不等;逻辑运算符的优先级从高到低排列为非、与、或。事实上,一个表达式常常是各种运算符混合使用的,当一个表达式中包含不同类型的运算符时,将按照各运算符优先级从高到低的顺序开始运算,如果遇到圆括号“()”,则要最先运算括号里的表达式的值。
类别运算符一元运算符+(取正)
-(取负)!(非)++x(前增量)
--x
(前减量)乘/除运算符*/%加/减运算符+-关系运算符<><=>=关系运算符==!=逻辑与运算符&&逻辑或运算符||条件运算符?:赋值运算符=*=/=%=+=-=<<=>>=&=^=|=2.5流程控制2.5.1顺序结构【案例2-3】顺序结构程序设计题目:编写程序计算圆的面积分析:该问题属于数学问题,圆的面积的公式为s=∏r2,其中∏的值取3.14,所以在程序中将其定义为符号常量,半径为用户通过键盘输入的值,在得到∏的值和半径后,根据求圆的面积的公式即可求出圆的面积。2.5.2选择结构在C#中,提供两种选择结构实现流程的改变:if语句,用于判断特定的条件是否满足,用于单分支选择结构设计中,也可以通过嵌套实现多分支选择结构;switch语句,用于多分支选择结构设计中。1单分支选择结构(if语句)它根据条件表达式的值选择是否要执行后面的内嵌语句序列,一般用于简单选择,即选择项中有一个或两个分支。格式为:if(布尔表达式)内嵌语句序列1;else
内嵌语句序列2;说明:①若布尔表达式的值为真时,程序执行内嵌语句序列1,否则执行内嵌语句序列2。②if…else语句中,内嵌语句序列1和内嵌语句序列2可以是简单语句,也可以复合语句。如果内嵌语句序列为多个执行语句,要使用花括号({…})将它们组合为一个语句块。③else及它的内嵌语句序列2也可以被省略,即当布尔表达式的值为真时,程序执行内嵌语句序列1;为假时,不执行内嵌语句序列1,而是直接执行其后的语句。【案例2-4】if语句题目:编写程序实现从键盘输入一个数,输出它的绝对值分析:任何数的绝对值都是正的,所以只要对输入的数进行判断,如果小于0,就取此数的负值即可;反之,则不用任何转换,直接输出。【案例2-5】if…else语句题目:输入一个整数,判断它是偶数还是奇数,并将结果输出。分析:判断一个整数的奇偶性就是看它能否被2整除,能被2整除(即余数为0)的是偶数,反之则为奇数。所以该问题可以可以选择“输入的数%2==0”作为条件,也可以使用“输入的数%2!=0”作为条件,本例中使用“输入的数%2==0”作为选择判断条件。【案例2-6】if…else语句的嵌套题目:将百分制转换为五分制成绩。转换标准为:90分以上的为“优秀”,80分以上为“良”,70分以上为“中”,60分以上为“及格”,60分以下为“不及格”。分析:本题为多条件选择情况,需要先选择实现问题的方法。本题有两种方法实现:一种是自底向上,即先判断是不是及格,然后根据及格情况再判断相应的五分制得分;一种是自顶向下,即先判断是不是优秀,然后依次判断其余情况。本题使用第二种方法实现。第一种方法由读者自行尝试实现。2多分支选择结构(switch语句)在程序设计时,如果遇到有两个以上的选择时,就会使用switch语句来实现,使程序看起来简洁且易于维护。格式为:switch(控制表达式){case常量表达式1:内嵌语句1;
break;case常量表达式2:内嵌语句2;
break;……default:
内嵌语句n+1;break;}说明:(1)控制表达式允许的数据类型为:整数类型(sbyte,byte,short,ushort,uint,long,ulong)、字符类型(char)、字符串类型(string)、或者枚举类型以及能够隐式转换成上述的任何类型。(2)各个case语句后的常量表达式的数据类型必须与控制表达式的数据类型相同或能够隐式转换为控制表达式的类型。(3)case或者default后的内嵌语句中必须使用break语句作为结束,以便跳出switch语句,否则,程序编译时会出现错误。(4)switch语句的执行顺序为:先求出控制表达式的值;如果case标签后的常量表达式的值与控制表达式的值相等,则执行该case语句后的内嵌语句;如果没有与控制表达式的值相等的常量表达式的值,则执行default语句后的内嵌语句;如果控制表达式的值不满足case标签,并且也没有default标签,则控制转向switch语段的结束端。2.5.3跳转语句break跳出当前分支和循环continue跳出当次循环return返回调用者2.6复杂数据类型2.6.1数组类型数组是相同类型变量的集合,这些变量具有相同的标识符即数组名,数组中的每个变量称为数组的元素或成员。为了引用数组中的特定成员,使用数组名加中括号“[]”括起来的整型表达式,该表达式称为数组的索引(index)或下标。对于一个数组a,假如它的下标为了10,则它的成员分别为a[0]~a[9]。1数组的定义格式:
数据类型[]数组名;2数组的初始化数组初始化的方法有两种:即动态初始化和静态初始化。(1)动态初始化格式为:数组名=new数据类型[数组长度];(2)静态初始化格式为:数据类型[]数据名={元素1[,元素2…]};注意:在数组初始化时,如果大括号中已明确列出了数组中的元素,即确定了元素个数,则表示数组元素个数的数值(即方括号中的数值)可以是变量,但必须与数组元素个数一致。例inta=3;//定义一个整型变量a,并为a赋初值为3。例int[]intArrX=newint[3]{2,3,4};//正确。例int[]intArrY=newint[a]{2,3,4};//正确,a为变量。例int[]intArrY=newint[3]{2,3,4,7};//错误。数组元素个数与方括号中的数值不一致。3数组的访问在对数组进行初始化后,就可以访问数组了。访问数组就是访问数组中的元素,在C#中是通过数组名和下标(索引)来访问数组中的元素。对数组中元素的访问分为单个元素访问和所有元素访问两种情况。对数组元素访问最常见的两种形式为给数组元素赋值和用数组元素的值为其他变量赋值。题目:给定10个数:10,9,8,7,6,5,4,3,2,1,将这些数存在数组中,并将其按从小到大的顺序输出。4foreach语句foreach循环语句可以遍历数组或其他集合的所有项,逐个检查每一项。其语法格式为:
foreach(类型标识符in表达式)语句2.6.2字符串类型
1静态字符串String(1)创建字符串例stringstr=”Thisisastring”;
(2)字符串常用方法二.设a=7,b=3,c=4,求下列表达式的值(1)a/2*c/2(2)a%3+b*b/(float)c/5三.把下列数学表达式改写为等价的C#算术表达式
(1)(2)(3)四.设a=3,b=5,c=-1,d=7,求下列逻辑表达式的值1.(c+d)/(a–b)%2<0&&!(c>0)||d<02.a–b>=c&&b–a>=d五.根据下面所给的条件,列出相应的布尔表达式1.分房条件为:已婚(married),年龄(age)在26岁以上,工作年限(working_age)在5年以上。2.征兵条件是:男性(sex)年龄(age)在18~20岁之间,身高(size)在1.65米以上;或者女性(sex)年龄(age)在16~18岁之间,身高(size)在1.60米以上。2.6.3枚举类型枚举类型是用户自定义的数据类型,是一种允许用符号来代表数据的数据类型。枚举是指在程序中某个变量具有一组确定的值,通过“枚举”可以将其值一一列出来。1枚举类型的定义其一般语法形式为:enum枚举名称[:数据类型]{枚举成员表}[;]2说明:(1)定义枚举类型时,必须带上enum关键字(2)枚举名称必须是C#中合法的标识符。(3)如果枚举名称后面的数据类型没有标明,则枚举类型中定义的所有枚举值都默认为整型;如果标明,则所有枚举值的数据类型为标明的数据类型。一个枚举声明可以显式地声明为byte、sbyte、short、ushort、int、uint、long或ulong中的任意一个类型。(4)由一对花括号“{}”括起来的部分是枚举成员表,枚举成员通常要使用用户易于理解的标识符字符串来表示,它们之间用逗号间隔。枚举成员的个数可以是0个或多个,但枚举成员的名称不能重名。(5)在花括号结束后,可以选择带或不带“;”。enumWeekDay{Sun,Mon,Tue,Wed,Thu,Fri,Sat};enumcolor:uint{red=-1,green=-2,blue=-3}第3章C#面向对象
程序设计基础主要内容:
了解面向对象程序设计的基本概念及特征;熟练掌握类的定义及对象的创建;掌握类的继承;掌握属性和方法的声明及使用;理解并掌握方法的重载和静态成员的创建及调用方法。3.1面向对象程序设计3.1.1面向对象的引入1、面向过程:也称为结构设计,重点在于设计一系列的函数(算法)来解决整个问题确定函数后,再寻找合适的方法来存储数据。
2、面向对象
以数据为中心,类作为表现数据的工具是划分程序的基本单位,而函数在面向对象设计中成为了类的方法。
3.1.2面向对象语言的特点
1.抽象面向对象程序设计的基本要素是“抽象”。它允许按照层次关系,根据物理含义将一个复杂的系统抽象成更容易管理的子系统。2.封装在面向对象程序设计中,将数据及对数据的操作封装在类里,构成具有独立意义的构件。类的用途是封装复杂性,它将所有的实现细节对界屏蔽。所有对类中数据的访问与操作都通过外部接口来完成。3继承继承支持层次抽象的概念。通常,用户可以先创建一个具有共性的一般类,根据该一般类(父类)再创建具有特殊属性的新类(子类)。4多态当新类从某个一般类中继承后,可能需要修改父类中某个方法的实现方式。多态机制能够根据需要,分别用于实现不同子类的方法。例如:某个对象,其父类为“笔”,在调用它的“写”方法时,程序会自动判断出它的具体类型,如果是毛笔,就调用毛笔类对应的“写”方法,如果是铅笔,就调用铅笔对应的“写”方法。3.1.3面向对象的基本概念类和对象是面向对象程序设计的两个基本概念。类是对象的抽象和描述,对象是类的实例。面向对象程序设计的重点在于设计类。3.2类与对象3.2.1类的定义
在类定义中需要使用关键字class,其定义格式为:
class类名{类体}“字段”是类定义中的数据,也叫类的变量。上例中定义的“ID”、“Name”与“Sex”均为类的字段。如果需要在类定义的多个方法中使用某个变量,该变量应该声明为字段。“属性”用于读取和写入“字段”值,“属性”是字段的自然扩展,对用户而言,“属性”等同于“字段”本身,对程序员而言,属性是一种读写“字段”的特殊方法。“方法”实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作以实现特定的功能。3.2.2对象
类实质上就是一种数据类型,是用户自己定义的数据类型,它是创建对象的一个模板。1创建对象在C#中,创建对象包括对象的声明和为对象分配内在两个步骤。(1)声明对象类名对象名称;例如:Students1;//声明一个学生类对象s1(2)为声明的对象分配内存使用new关键字来为声明的对象分配内存,这一过程也叫对象实例化。对象名=new类名();例s1=newStudent();//为s1分配内存另外,对象的声明与实例化也可以一起进行。例Students1=newStudent();2访问对象访问对象实质是访问对象成员,对象通过使用运算符“.”实现对对象成员的访问。例s1.ID=”2008001”;s1.Name=”张三”;s1.Sex=”男”;可以使用对象变量为另一个对象变量整体赋值,例Studens2;s2=s1;//s2可以不用new关键字初始化。可以使用对象中的某一成员为变量赋值。例stringsName=s1.Name;//将对象s1的Name成员值赋给字符串变量sName题目:编写一个控制台应用程序,自定义一个学生类,该类仅包含学号、姓名与性别,在Program类中声明学生类的对象,通过控制台为对象成员赋值,再将对象成员的值输出。3.2.3类的继承在C#中,实现类的继承的语法格式为:class子类名:父类名{
类体}
题目:创建控制台应用程序,按前述内容在程序中定义Strudent类的子类CollegeStu(大学生类),在CollegeStu类中增加所在系字段,并将其输出。3.2.4访问权限
访问修饰符功能public(公有)访问不受限制,可以被任何其他类访问protected(保护)访问只限于类的内部,以及由该类的子类。private(私有)访问只限于类的内部。3.3属性
对私有或保护数据成员的访问可以设置其属性的形式实现。通过属性可以控制数据的访问形式,甚至设计数据可接受的值域。
3.3.1声明属性声明属性的语法格式为:访问修饰符类型属性名{get{}//读访问器
set{}//写访问器}题目:修改【案例3-1】中的Student类定义,添加字段的读写属性,将字段的访问修饰符修改为private,字段名改为小写。3.4方法3.4.1声明与调用方法方法的使用分声明与调用两个环节。1声明方法访问修饰符返回类型方法名(参数列表){}2调用方法根据方法被调用的位置,可以分为在方法声明的类定义中调用方法和在方法声明的类定义外部调用方法。在方法声明的类定义中调用方法的语法格式为:方法名(参数列表)在方法声明的类定义外部调用方法的语法格式为:对象名.方法名(参数列表)题目:改写【案例3-3】在Student类创建一个用于显示学生信息有方法。3.5静态成员类可以具有静态成员,例如静态字段、静态方法等。静态成员与非静态成员的不同在于,静态成员属于类,而非静态成员则总是与特定的实例(对象)相联系。声明静态成员需要使用static修饰符。3.5.1静态数据成员非静态的字段总是属于某个特定的对象,其值总是表示某个对象的值。例如,学号(ID)。有时可能需要类中有一个数据成员来表示全体对象的共同特征.例如,在Student类中用一个数据成员来统计学生的人数。例如:classStudent//类名为Student{PublicstaticintstudentNum;//声明静态数据成员
publicstringID;publicstringName;publicstringSex;}
静态数据成员studentNum不属于任何一个特定的对象,而是属于类,或者说属于全体对象,是被全体对象共享的数据。3.5.2静态方法静态方法同样使用修饰符static声明。静态方法属于类,只能使用类调用,不能使用对象调用。题目:创建一个控制台应用程序,在该程序中定义一个学生类,该类除包含非静态数据成员外,还包含一个静态数据成员用以统计学生人数(对象个数),以及一个静态方法用以显示学生信息。第4章Windows窗体和常用控件大连理工大学出版社高职教育出版中心主要内容:
Windows窗体的基本属性、事件和方法常用控件的基本属性、事件和方法目的要求:掌握Windows窗体及其常用控件的用法;通过大量实例,熟练掌握界面的设计方法。重点难点:常用控件的用法4.1Windows窗体
Windows应用程序设计是作为图形用户界面(GUI)设计的。用户通过一些简单的操作(如鼠标的点击)来引发一些事件。
Windows应用程序的界面是以窗体(Form)为基础的,窗体是Windows应用程序的基本单位,是一小块屏幕区域,主要用来向用户展示信息和接受用户的输入。
4.1.1窗体的基本属性
(1)Name:窗体名称,该属性值主要用于在程序代码中引用窗体。(2)Text:窗体标题,它的值是一个字符串。(3)Font:窗体字体,可从弹出的对话框中选择。(4)ForeColor:窗体文本颜色,可从弹出的调色板中选择。(5)BackColor:窗体背景颜色(6)BackgroundImage:窗体背景图片。(7)BackgroundImageLayout:窗体背景图片布局,如平铺,则此属性应设置为Stretch。
(8)FormBorderStyle:窗体边框样式,如有无边界、单线、3D、是否可调整等。(9)MaximizeBox:窗体上的最大化按钮是否可用,设置为false时,按钮不可用。(10)MinimizeBox:窗体上的最小化按钮是否可用,设置为false时,按钮不可用。
(11)WindowState:窗体运行时的初始状态,值为Normal(正常)、Maximized(最大化)、Minimized(最小化)。4.1.2Windows窗体常用事件(1)Load:窗体加载事件(2)FormClosed:窗体关闭事件(3)Click:窗体单击事件(4)DoubleClick:窗体双击事件(5)FormClosing:窗体正在关闭事件(6)Resize:窗体大小被改变事件【案例4-1】窗体属性与方法(1)Show:加载并显示非模态窗体(2)Hide:隐藏窗体(3)Close:关闭并卸载窗体(4)ShowDialog:加载并显示模态窗体,如对话框等。注:只有当关闭了所打开的模态窗体才可以切换到其它窗体。4.1.3窗体常用方法【案例4-2】多窗体的显示4.1.4
设置启动窗体
(1)在解决方案资源管理器中,右击要设为启动项目的项目,在弹出菜单中选“设为启动项目”(2)双击启动项目对应的项目文件。如图P1的项目文件为Program.cs(3)在打开的Program.cs中,若把“Application.Run(newForm1());”改为“Application.Run(newForm2());”,则程序运行后,就先启动窗体Form24.1.5窗体控件窗体就好像一个容器,其他界面元素都可以放置在窗体中。控件是包含在窗体上的对象,是构成用户界面的基本元素,工具箱中包含了建立应用程序的各种控件,常用的Windows窗体控件放在“Windows窗体”选项卡下。每个控件都有自己的属性、方法及事件。
(1)大多数控件的常用属性
Name
:名称
Text:标题(文本),是给用户看的或让用户输入的。
Size:尺寸大小
Location:位置
Font:字体
ForeColor:字体颜色:
BackColor:背景色Visable:可见否Enabled:有效否Anchor:Anchor属性用来确定此控件与其容器控件的固定关系,可设定Top、Bottom、Right、Left中的任意几种。Dock:
Dock属性规定了子控件与父控件的边缘依赖关系(即停靠到父控件的哪些边)。Dock的值有6种:None、Top、Left、Fill、Right、Left。(2)控件的方法
可调用控件的方法来获得控件的一些信息,或者设置控件的属性值及行为状态。如:Focus方法可设置此控件获得焦点;Select方法可激活控件;Show方法可显示控件;Hide方法可隐藏控件
(3)控件的事件
当用户进行某一项操作时,会引发某个事件的发生,此时就会调用预先编写的事件处理程序代码,实现对程序的控制。控件的可响应的事件有:单击时发生的Click事件;光标改变时发生的Cursorchanged事件;双击时发生的DoubleClick事件;拖动时发生的DragDrop事件;鼠标移动时发生的MouseMove事件等。
(4)命令按钮控件(Button)
在任何Windows窗体上都可指定某个Button控件为接受按钮(也称默认按钮)。通过设置窗体的AcceptButton或CanelButton属性,则无论该按钮是否有焦点,都可通过按Enter或Esc键来触发按钮的Click事件。
Name:名称
Caption:标题,加速键字母前加&Enabled:可激活的
Button控件的最基本用法是在单击按钮时运行某些代码。单击Button控件还生成许多其他事件,如MouseDown,MouseUp,
MouseEnter事件。1.显示消息对话框要用MessageBox对象的Show方法.可重载。例:
MessageBox.Show(“密码错误”);2.要想为消息框加上标题,就需向MessageBox.Show传递第2个字符串。例:
MessageBox.Show(“欢迎您!”,“欢迎界面”);
4.2消息对话框3.除“确定”按钮外,还可为消息框添加其他按钮,但必须从MessageBoxButtons定义的按钮组中选择。例:
MessageBox.Show(“您确定要执行此操作吗?”,“确认”,MessageBoxButtons.YesNoCancel);
4.除上面3个参数外,还可为消息框加第4个参数:指定的图标。例:
MessageBox.Show("您确定要执行此操作吗?","确认",
MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
5.若不返回值,则常用语法格式(显示具有指定文本、标题、按钮和图标的消息框):
MessageBox.Show(text,caption,buttons,icon);
若有返回值,则常用语法格式:DialogResultdrl=MessageBox.Show(text,caption,buttons,icon);参数Buttons:必须从MessageBoxButtons定义的按钮组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国贴剂行业发展现状及前景规划研究报告
- 2025-2030年中国稀土冶炼分离市场运行动态及发展前景分析报告
- 2025甘肃省安全员考试题库附答案
- 南京医科大学《课程论文写作与学术规范》2023-2024学年第二学期期末试卷
- 黔西南民族职业技术学院《外国建筑史》2023-2024学年第二学期期末试卷
- 青海交通职业技术学院《传感检测技术》2023-2024学年第二学期期末试卷
- 天津商业大学《学术论文选题与写作》2023-2024学年第二学期期末试卷
- 湖北大学《财务会计一》2023-2024学年第二学期期末试卷
- 2025上海市建筑安全员考试题库及答案
- 西藏大学《软件交互设计》2023-2024学年第二学期期末试卷
- 开学安全第一课主题班会课件
- 新版《医疗器械经营质量管理规范》(2024)培训试题及答案
- 2025年人教版数学五年级下册教学计划(含进度表)
- 2025年初级社会工作者综合能力全国考试题库(含答案)
- 2024年我国人口老龄化问题与对策
- 中心静脉压测量技术-中华护理学会团体标准2023
- 部编人教版二年级道德与法治下册同步练习(全册)
- 综合实践活动六年级下册 饮料与健康课件 (共16张PPT)
- 数量金融的概况和历史课件
- 专业医院lovo常用文件产品介绍customer presentation
- 叉车日常使用状况点检记录表(日常检查记录)
评论
0/150
提交评论