C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章 类

上传人:E**** 文档编号:89188068 上传时间:2019-05-20 格式:PPT 页数:44 大小:114.50KB
返回 下载 相关 举报
C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章  类_第1页
第1页 / 共44页
C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章  类_第2页
第2页 / 共44页
C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章  类_第3页
第3页 / 共44页
C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章  类_第4页
第4页 / 共44页
C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章  类_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章 类》由会员分享,可在线阅读,更多相关《C#网络编程及应用 教学课件 ppt 作者 刘瑞新 第04章 类(44页珍藏版)》请在金锄头文库上搜索。

1、第四章 类,4.1 基础知识 4.2 构造函数 4.3 方法 4.4 属性与索引 4.5 String类 4.6 StringBuilder类 4.7 Convert类 4.8 DateTime类 4.9 Math类,4.1 基础知识,4.1.1 类与对象 类:大楼结构蓝图 对象(实例):理工楼、十号楼、科技馆 要使用对象,必须先定义类,然后再创建类的对象。,1类的组织 在C#中使用class定义类,一般格式为: class /成员声明 /构造函数 /方法 / 下面举例说明如何声明类、构造函数和方法。,声明类、构造函数和方法的例子,using System; public class Chil

2、d private int age; private string name; /下面是不带参数的构造函数 public Child() name = “none“; / 下面是带参数的构造函数 public Child(string name, int age) this.name = name; this.age = age; ,/ 输出方法 public void PrintChild() Console.WriteLine(“0, 1 years old.“, name, age); public class MainClass public static void Main() /

3、创建对象要用new操作符 Child child1 = new Child(“Zhang San“, 11); Child child2 = new Child(“Li Si“, 10);,Child child3 = new Child(); Console.Write(“Child #1: “); child1.PrintChild(); Console.Write(“Child #2: “); child2.PrintChild(); Console.Write(“Child #3: “); child3.PrintChild(); 输出结果:,Child #1: Zhang San,

4、11 years old. Child #2: Li Si, 10 years old. Child #3: none, 0 years old.,2对象的生存周期 对象在建立时分配了内存,创建对象实际上作了两个方面的工作: (1)使用new保留字要求系统分配内存; (2)使用构造函数初始化数据。 在C#中不允许通过编制程序做销毁对象的工作,这是因为如果把这个权力交给编程者,一旦编程者忘记销毁对象,就会引起内存泄漏问题。 C#采用垃圾回收机制自动销毁对象,在适当的时候自动启动回收机制,然后检测没有被引用的对象并销毁之。 销毁对象也是做了两个方面的工作: (1)释放占用的内存; (2)将分配给对

5、象的内存归还给堆(Heap)。,4.1.2 静态成员与实例成员,类的成员 在类中定义的数据称为类的成员。对象中的成员和方法都是对象私有的,即只有对象本身才能够操作这些成员和调用这些方法,其他对象不能直接对其进行操作。 所有对象共用的内容也可以定义为静态(static)的,当该类被装入内存时,系统就会在内存中专门开辟一部分区域保存这些静态成员和方法,这样一来,其它类不必建立该类的实例就可以直接使用该类的静态成员和方法。 静态成员和静态方法在内存中只有一份 静态的成员或者方法要等到应用程序结束时才会消失。 我们把只有创建了类的实例才能够使用的成员叫实例成员。,4.1.3 访问修饰符,C#中有以下几

6、种成员访问修饰符: Public 任何外部的类都可以不受限制的存取这个类的方法和数据成员。 private 类中的所有方法和数据成员只能在此类中使用,外部无法存取。 Protected 除了让本身的类可以使用之外,任何继承自此类的子类都可以存取。 Internal 在当前项目中都可以存取。该访问权限一般用于基于组件的开发,因为它可以使组件以私有方式工作,而该项目外的其它代码无法访问。 protected internal 只限于当前项目,或者从该项目的类继承的类才可以存取。,4.2 构造函数,构造函数用于在建立对象时进行初始化的动作 每当创建一个对象的实例时,都会先调用类中定义的构造函数。 每

7、个类至少有一个构造函数。如果不写构造函数,系统会提供一个缺省的构造函数。 一个构造函数总是和它的类名相同,但是,不能声明返回类型。 构造函数总是 public的。,4.2.1 缺省构造函数,如果在类中不定义构造函数,系统会提供一个缺省的构造函数,缺省构造函数没有参数,之所以这样做是为了保证能够在使用实例前先进行非静态类成员的初始化工作,即将非静态成员初始化为: 数值型:如int、double等,初始化为0。 bool类型:初始化为false. 引用类型:初始化为null。,4.2.2 重载(Overloading)构造函数,有时候可能会遇到这样的情况:在一个类中的多个方法中都要用到某一个数据成

8、员,而该成员值必须从其它类中传递过来,这时,无参数的构造函数就不能胜任了,解决这个问题最好的办法就是:重载构造函数。 下面是重载构造函数的一个例子。,using System; class Test public Test() Console.WriteLine(“hi“); public Test(string str) Console.WriteLine(str); static void Main() Test aa=new Test(); Test bb=new Test(“How are you!“); Console.Read(); ,输出结果: hi How are you!,4

9、.3 方法,方法(Method)是一组程序代码的集合,每个方法都有 一个方法名,便于识别和让其它方法调用。 4.3.1 方法的定义与使用 C#程序中定义的方法都必须放在某个类中。 定义方法的语法形式为: 访问修饰符 返回值类型 方法名称(参数序列) /方法的内容 ,在定义方法时,需要注意以下几点: 方法名称不能和变量、常数或者任何声明在类中其它的成员相同。 方法名称后面的小括号中可以有参数序列,也可以没有参数,但是不论是否有参数,小括号都是必需的。如果参数序列中的参数有多个,则以逗号分隔开。 如果要结束某个方法的执行,可以使用return语句,程序遇到return语句后,会将执行流程交还给调用

10、此方法的程序代码段。此外,还可以利用return语句返回一个值,而且return语句只能返回一个值。 如果声明一个非void类型的方法,则方法中必须至少有一个return语句。,using System; class Method public int MyMethod() Console.WriteLine(“this is MyMethod.“); int i=10; return i; static void Main() Method method=new Method(); int j=5; j=method.MyMethod(); Console.WriteLine(“the va

11、lue is 0.“,j); Console.Read(); ,输出结果: this is MyMethod. the value is 10.,4.3.2 方法中的参数传递,(1)传递值类型的参数 格式:参数类型 参数名 当该方法被调用时,便会为每个值类型参数分配一个新的内存空间,然后将对应的表达式运算的值复制到该内存空间。在方法中更改参数的值不会影响到这个方法之外的变量。例如:,using System; class Method public static void AddOne(int a) a+; static void Main() int x=3; Console.WriteLi

12、ne(“调用AddOne之前,x=0“,x); AddOne(x); Console.WriteLine(“调用AddOne之后,x=0“,x); Console.Read(); ,输出结果: 调用AddOne之前,x=3 调用AddOne之后,x=3,(2)传递引用类型的参数 格式: ref 参数类型 参数名 引用类型的参数并没有再分配内存空间,实际上传递的是指向原变量的地址指针,既引用参数和原变量保存的是同一个地址。为了和传递值类型参数区分,前面加上ref关键字(Reference),在方法中修改引用参数的值实际上也就是修改被引用的变量的值。 举例:,using System; class

13、 Method public static void AddOne(ref int a) a+; static void Main() int x=3; Console.WriteLine(“调用AddOne之前,x=0“,x); AddOne(ref x); Console.WriteLine(“调用AddOne之后,x=0“,x); Console.Read(); ,输出结果: 调用AddOne之前,x=3 调用AddOne之后,x=4,(3)输出多个引用类型的参数 格式: out 参数类型 参数名 当一个方法计算的结果有多个时就用到了out关键字,使用out表明该引用参数是用于输出的,而

14、且调用该参数时不需要对参数进行初始化。 举例:,using System; class Method public static void MyMethod(out int a,out int b) a=5; b=6; static void Main() int x,y; MyMethod(out x,out y); Console.WriteLine(“调用MyMethod之后,x=0,y=1“,x,y); Console.Read(); ,输出结果: 调用MyMethod之后,x=5,y=6,(4)传递个数不确定的参数 需要传递的参数个数不确定时,可以采用params关键字声明参数的个数

15、是不确定的。 举例:,using System; class Method public static float VarLenParam(params long v) long total,i; for(i=0,total=0;iv.Length;+i) total+=vi; return (float)total/v.Length; static void Main() float x=VarLenParam(1,2,3,5); Console.WriteLine(“1+2+3+5的平均值为0“,x); x=VarLenParam(4,5,6,7,8); Console.WriteLine

16、(“4+5+6+7+8的平均值为0“,x); Console.Read(); ,运行结果: 1+2+3+5的平均值为2.75 4+5+6+7+8的平均值为6,4.3.3 方法重载(overloading),方法重载是指具有相同的方法名,但参数类型或参数个数不完全相同的多个方法可以同时出现在一个类中。这种技术非常有用,在开发过程中,我们会发现C#.NET中的很多方法均使用了重载技术。 举例:,using System; class Method public static int Add(int i,int j) return i+j; public static string Add( string s1,string s2) r

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

当前位置:首页 > 高等教育 > 大学课件

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