VC#其它常用数据类型

上传人:宝路 文档编号:48188541 上传时间:2018-07-11 格式:PPT 页数:35 大小:253.07KB
返回 下载 相关 举报
VC#其它常用数据类型_第1页
第1页 / 共35页
VC#其它常用数据类型_第2页
第2页 / 共35页
VC#其它常用数据类型_第3页
第3页 / 共35页
VC#其它常用数据类型_第4页
第4页 / 共35页
VC#其它常用数据类型_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《VC#其它常用数据类型》由会员分享,可在线阅读,更多相关《VC#其它常用数据类型(35页珍藏版)》请在金锄头文库上搜索。

1、Visual C# .NET程序设计第三讲 其它常用数据类型 第6章 其它常用数据类型 本章要点: 字符串类型的定义与使用 枚举类型的定义与使用 委托类型的定义与使用6.1 循序渐进学理论 6.1.1 字符串类型 1字符串的种类及其定义 (1)规则字符串格式:string 字符串变量名=字符串初值;(2)逐字字符串逐字字符串由字符后跟双引号括起来的零个或多 个字符组成。格式:string 字符串变量名=字符串初值; 转义字符含义转义字 符含义单引号()nLF(换行)“双引号(“)rCR(回车)反斜杠本身()tHT(横向跳格,相当于 Tab键)0空字符u表示后面跟八进制数a警示符U同ub退格x表

2、示后面跟十六进制数fFF(换页键)vVT(纵向跳格)规则字符串中可以使用的转义字符 【例6-1】观察下列程序的执行结果。 程序代码 using System; class A_6_1 public static void Main() string str1=“你是“王三“?“; /“” 是转义字符string str2=“星期一星期二星期三“; /“”是转义字符string str3=“你好!t王三。“; /“t”是 转义字符string str4=“你好t王三?“; /t并不看 成转义字符,而是看成两个字符string str5=“星期一星期二星期三“; / 也不是转义字符,而是看成两个“

3、”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字符串中单个字符的访问 例如,有以下语句: string str1=“I am a tea

4、cher.“/定义一 个字符串并赋初值 char c;/定义一个字符变量 c=str10;/给字符变量赋一个字符,该 字符为str1字符串的第一个字符 语句执行后,字符变量c的值为I。【例6-4】 编写一个程序,用来统计用户 输入的字符串中字母个数、数字个数和 其它字符个数。程序的设计界面如图6-3 所示,程序的运行界面如图6-4所示。图6-3 程序设计界面 图6-4 程序运行界面 6.1.2 结构类型 在C+和C#中,结构类型是对同一类具有某些特定属 性和功能的对象的抽象定义,其定义中可以包括构造 函数、析构函数、成员变量、成员函数、成员属性等 等,同C#中的类类型基本相同。但结构类型与类类

5、型毕竟是两种不同的类型,主 要不同点体现在以下两个方面。 (1)存储值的不同结构类型是值类型,而类类型是引用类型。 (2)参数传递不同 格式:struct 结构型名 成员声明; 例如: struct student public string name;public int age; 实际上程序中使用的不是结构型,而是根据结构 型声明的结构型变量,根据结构型声明结构型变量的 格式如下。 格式:结构型名 结构型变量名; 例如有以下语句: student stu; 就是创建了一个名为stu的结构型变量。 在程序中经常需要访问结构型变量的成员,访问方法如 下。 结构型变量名.成员名; 如要给stu的

6、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#的委

7、托相当于在C/C+中的函数指针 。函数指针用指针获取一个函数的入口 地址,实现对函数的操作。委托与 C/C+中的函数指针不同在于委托是面 向对象的,是引用类型,因此对委托的 使用要先定义后实例化,最后才调用。定义委托使用关键字delegate,定义一个 委托:delegate int SomeDelegate(int nID, string sName);再实例化:SomeDelegate d1 = new SomeDelegate(wr.InstanceMethod);最后调用:d1(5, “aaa“);通过委托SomeDelegate实现对方法 InstanceMethod的调用,调用还必

8、须有 一个前提条件是:方法InstanceMethod 有参数和定义SomeDelegate的参数一致 ,并且返回值为int。方法 InstanceMethod定义:public int InstanceMethod(int nID, string sName)委托的实例化中的参数既可以是非静态 方法,也可以是静态方法。 l 一个委托声明定义了一个从类System.Delegate延伸 的类。一个委托实例封装一个方法及可调用的实体。 在声明委托时只需要指定委托指向的函数原型的类型 ,它不能有返回值也不能带有输出类型的参数。委托 类型的定义格式如下。 格式:delegate 数据类型说明符 委托

9、类型名(); 例如,若要声明一个指向double类型函数原型的委托类 型,可使用如下语句: delegate double MyDelegate();l委托既可以封装一个静态方法也可以封装一个非静态 的方法。委托的使用方法,一般分为三步:(1)声明委托,定义参数列表和返回类型。(2)实例化委托:定义一个委托类型的实例变 量,让该实例变量指向某一个具体的方法。其 一般格式如下。格式:委托类型名 委托变量名=new 委托类 型名(方法名); (3)调用委托:调用委托类型变量指向的方法 。其一般格式如下。 格式:委托变量名(实参列表);【例4.25】委托示例。 using System; class

10、 SimpleClass public class WorkerClass / 委托引用的非静态方法 public int InstanceMethod(int nID, string sName) int retval=0; retval=nID*sName.Length; Console.WriteLine(“调用InstanceMethod方法“); return retval; / 委托引用的静态方法 static public int StaticMethod(int nID, string sName) int retval=0; retval=nID*sName.Length;

11、Console.WriteLine(“调用StaticMethod方法“); return retval; / 定义委托,参数与上面两个方法相同 public delegate int SomeDelegate(int nID, string sName); static void Main(string args) / 调用实例方法(非静态方法) WorkerClass wr = new WorkerClass(); SomeDelegate d1 = new SomeDelegate(wr.InstanceMethod); Console.WriteLine(“Invoking deleg

12、ate InstanceMethod, return=0“, d1(5, “aaa“) ); / 调用静态方法 SomeDelegate d2 = new SomeDelegate(WorkerClass.StaticMethod); Console.WriteLine(“Invoking delegate StaticMethod, return=0“, d2(5, “aaa“) ); 运行结果如图4.10所示。图4.10 运行结果委托2. 多播相对于上面的一次委托只调用一个方法 ,一次委托也可以调用多个方法,称为 多播。通过+和-运算符实现多播的增加 或减少。【例4.26】多播示例。 us

13、ing System; class SimpleClass public class WorkerClass /委托引用的非静态方法 public int InstanceMethod(int nID, string sName) int retval=0; retval=nID*sName.Length; Console.WriteLine(“调用InstanceMethod方法“); return retval; /委托引用的静态方法 static public int StaticMethod(int nID, string sName) int retval=0; retval=nID

14、*sName.Length; Console.WriteLine(“调用StaticMethod方法“); return retval; /定义委托,签名与上面两个方法相同 public delegate int SomeDelegate(int nID, string sName); static void Main(string args) /调用实例方法 WorkerClass wr = new WorkerClass(); SomeDelegate d1 = new SomeDelegate(wr.InstanceMethod); Console.WriteLine(“Invoking

15、 delegate InstanceMethod, return=0“, d1(5, “aaa“) ); /调用静态方法 SomeDelegate d2 = new SomeDelegate(WorkerClass.StaticMethod); Console.WriteLine(“Invoking delegate StaticMethod, return=0“, d2(5, “aaa“) ); /多播 Console.WriteLine(); Console.WriteLine(“测试多播.“); /多播d3由两个委托d1和d2组成 SomeDelegate d3 =d1+ d2; Console.WriteLine(“Invoking delegate(s) d1 AND d2 (multi-cast), return=0 “, d3(5,“aaa“) ); /委托中的方法个数 int num_method=d3.GetInvocationList().Length; Console.WriteLine(“Number of methods referenced by delegate d3: 0“, num_method); /多播d3减去委托

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号