VC#第3讲其它常用数据类型.ppt

上传人:max****ui 文档编号:11498198 上传时间:2020-04-25 格式:PPT 页数:35 大小:252.50KB
返回 下载 相关 举报
VC#第3讲其它常用数据类型.ppt_第1页
第1页 / 共35页
VC#第3讲其它常用数据类型.ppt_第2页
第2页 / 共35页
VC#第3讲其它常用数据类型.ppt_第3页
第3页 / 共35页
点击查看更多>>
资源描述
VisualC#.NET程序设计,第三讲其它常用数据类型,第6章其它常用数据类型,本章要点:字符串类型的定义与使用枚举类型的定义与使用委托类型的定义与使用,6.1循序渐进学理论,6.1.1字符串类型1字符串的种类及其定义(1)规则字符串格式:string字符串变量名=字符串初值;(2)逐字字符串逐字字符串由字符后跟双引号括起来的零个或多个字符组成。格式:string字符串变量名=字符串初值;,规则字符串中可以使用的转义字符,【例6-1】观察下列程序的执行结果。程序代码usingSystem;classA_6_1publicstaticvoidMain()stringstr1=你是王三?;/“”是转义字符stringstr2=星期一星期二星期三;/“”是转义字符,stringstr3=你好!t王三。;/“t”是转义字符stringstr4=你好t王三?;/t并不看成转义字符,而是看成两个字符stringstr5=星期一星期二星期三;/也不是转义字符,而是看成两个“”Console.WriteLine(str1=0,str2=1,str3=2,str1,str2,str3);Console.WriteLine(str3=0,str4=1,str4,str5);,执行结果,2字符串类型的使用,【例6-3】编写一个Windows应用程序,程序的设计界面如图6-1所示,程序的运行界面如图6-2所示。程序执行时在第一个文本框中输入一个字符串,然后按【倒置】按钮将把输入的字符串反序显示在第二个文本框中。,图6-1程序设计界面,图6-2程序运行界面,3字符串中单个字符的访问,例如,有以下语句:stringstr1=Iamateacher./定义一个字符串并赋初值charc;/定义一个字符变量c=str10;/给字符变量赋一个字符,该字符为str1字符串的第一个字符语句执行后,字符变量c的值为I。,【例6-4】编写一个程序,用来统计用户输入的字符串中字母个数、数字个数和其它字符个数。程序的设计界面如图6-3所示,程序的运行界面如图6-4所示。,图6-3程序设计界面,图6-4程序运行界面,6.1.2结构类型,在C+和C#中,结构类型是对同一类具有某些特定属性和功能的对象的抽象定义,其定义中可以包括构造函数、析构函数、成员变量、成员函数、成员属性等等,同C#中的类类型基本相同。但结构类型与类类型毕竟是两种不同的类型,主要不同点体现在以下两个方面。(1)存储值的不同结构类型是值类型,而类类型是引用类型。,(2)参数传递不同,格式:struct结构型名成员声明;例如:structstudentpublicstringname;publicintage;,实际上程序中使用的不是结构型,而是根据结构型声明的结构型变量,根据结构型声明结构型变量的格式如下。格式:结构型名结构型变量名;例如有以下语句:studentstu;就是创建了一个名为stu的结构型变量。在程序中经常需要访问结构型变量的成员,访问方法如下。结构型变量名.成员名;如要给stu的age成员赋值15,可使用如下语句:stu.age=15;,【例6-5】编程实现从键盘上输入一个学生的学号、姓名和年龄,然后输出刚刚输入的学生学号、姓名和年龄。,6.1.3枚举类型,格式:枚举修饰符enum枚举类型名枚举常量1,枚举常量2,枚举常量n;定义枚举变量的语句格式如下:枚举类型名变量名;如果希望让枚举型常量的值是其它类型的,可在定义枚举型时指定,定义格式与如下。格式:枚举修饰符enum枚举类型名:类型说明符枚举常量1,枚举常量2,枚举常量n;,【例6-6】定义一个职称枚举类型,输出枚举类型中所有枚举常量的值。,6.1.4委托类型,1委托C#的委托相当于在C/C+中的函数指针。函数指针用指针获取一个函数的入口地址,实现对函数的操作。委托与C/C+中的函数指针不同在于委托是面向对象的,是引用类型,因此对委托的使用要先定义后实例化,最后才调用。定义委托使用关键字delegate,定义一个委托:delegateintSomeDelegate(intnID,stringsName);再实例化:SomeDelegated1=newSomeDelegate(wr.InstanceMethod);最后调用:d1(5,aaa);通过委托SomeDelegate实现对方法InstanceMethod的调用,调用还必须有一个前提条件是:方法InstanceMethod有参数和定义SomeDelegate的参数一致,并且返回值为int。方法InstanceMethod定义:publicintInstanceMethod(intnID,stringsName)委托的实例化中的参数既可以是非静态方法,也可以是静态方法。,一个委托声明定义了一个从类System.Delegate延伸的类。一个委托实例封装一个方法及可调用的实体。在声明委托时只需要指定委托指向的函数原型的类型,它不能有返回值也不能带有输出类型的参数。委托类型的定义格式如下。格式:delegate数据类型说明符委托类型名();例如,若要声明一个指向double类型函数原型的委托类型,可使用如下语句:delegatedoubleMyDelegate();委托既可以封装一个静态方法也可以封装一个非静态的方法。,委托的使用方法,一般分为三步:(1)声明委托,定义参数列表和返回类型。(2)实例化委托:定义一个委托类型的实例变量,让该实例变量指向某一个具体的方法。其一般格式如下。格式:委托类型名委托变量名=new委托类型名(方法名);(3)调用委托:调用委托类型变量指向的方法。其一般格式如下。格式:委托变量名(实参列表);,【例4.25】委托示例。usingSystem;classSimpleClasspublicclassWorkerClass/委托引用的非静态方法publicintInstanceMethod(intnID,stringsName)intretval=0;retval=nID*sName.Length;Console.WriteLine(调用InstanceMethod方法);returnretval;/委托引用的静态方法staticpublicintStaticMethod(intnID,stringsName),intretval=0;retval=nID*sName.Length;Console.WriteLine(调用StaticMethod方法);returnretval;/定义委托,参数与上面两个方法相同publicdelegateintSomeDelegate(intnID,stringsName);staticvoidMain(stringargs)/调用实例方法(非静态方法)WorkerClasswr=newWorkerClass();SomeDelegated1=newSomeDelegate(wr.InstanceMethod);Console.WriteLine(InvokingdelegateInstanceMethod,return=0,d1(5,aaa);,/调用静态方法SomeDelegated2=newSomeDelegate(WorkerClass.StaticMethod);Console.WriteLine(InvokingdelegateStaticMethod,return=0,d2(5,aaa);运行结果如图4.10所示。,图4.10运行结果,委托,2.多播相对于上面的一次委托只调用一个方法,一次委托也可以调用多个方法,称为多播。通过+和-运算符实现多播的增加或减少。,【例4.26】多播示例。usingSystem;classSimpleClasspublicclassWorkerClass/委托引用的非静态方法publicintInstanceMethod(intnID,stringsName)intretval=0;retval=nID*sName.Length;Console.WriteLine(调用InstanceMethod方法);returnretval;,/委托引用的静态方法staticpublicintStaticMethod(intnID,stringsName)intretval=0;retval=nID*sName.Length;Console.WriteLine(调用StaticMethod方法);returnretval;/定义委托,签名与上面两个方法相同publicdelegateintSomeDelegate(intnID,stringsName);staticvoidMain(stringargs)/调用实例方法WorkerClasswr=newWorkerClass();SomeDelegated1=newSomeDelegate(wr.InstanceMethod);Console.WriteLine(InvokingdelegateInstanceMethod,return=0,d1(5,aaa);,/调用静态方法SomeDelegated2=newSomeDelegate(WorkerClass.StaticMethod);Console.WriteLine(InvokingdelegateStaticMethod,return=0,d2(5,aaa);/多播Console.WriteLine();Console.WriteLine(测试多播.);/多播d3由两个委托d1和d2组成SomeDelegated3=d1+d2;Console.WriteLine(Invokingdelegate(s)d1ANDd2(multi-cast),return=0,d3(5,aaa);/委托中的方法个数intnum_method=d3.GetInvocationList().Length;Console.WriteLine(Numberofmethodsreferencedbydelegated3:0,num_method);/多播d3减去委托d2d3=d3-d2;Console.WriteLine(Invokingdelegate(s)d1(multi-cast),return=0,d3(5,aaa);,/委托中的方法个数num_method=d3.GetInvocationList().Length;Console.WriteLine(Numberofmethodsreferencedbydelegated3:0,num_method);运行结果如图4.11所示。,图4.11运行结果,6.2典型实例练能力,6.2.1典型实例一:回文字符串的判定【实例题目】编写一个应用程序,用来判断用户输入的字符串是否为回文,所谓回文就是正读和反读均一样的字符串。如“abcddcba”、“我是兵兵是我”均是回文,而“abcdefgh”则不是回文。程序的设计界面如图6-5所示,程序的运行界面如图6-6所示。,图6-5程序设计界面,图6-6程序运行界面,6.3上机练习重应用,6.3.1上机练习一:从字符串中分离出数字字符【练习题目】编写一个程序,把在一个文本框中输入的字符串中的数字字符分离出来,然后显示在另一个文本框中。程序的设计界面如图6-8所示,程序的运行界面如图6-9所示。,图6-8程序设计界面,图6-9程序运行界面,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!