《c#重载、静态方法、构造函数析构函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《c#重载、静态方法、构造函数析构函数ppt课件.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、方法的格式 既无参数也无返回值的方法,如:void fun() 有参数但无返回值的方法,如:void fun(int a, char ch) 无参数但有返回值方法,如:double fun() 既有参数又有返回值的方法,如:int fun(string s)方法中的参数(I) 方法中参数的传递值传递、引用传递-ref、输出参数-out,例:class Test static void Main()void fun(ref int x, ref int y) int t = x;int a = 3, b = 5;x = y;new Test().fun(ref a, ref b);y = t;C
2、onsole.WriteLine(a = + a);Console.WriteLine(a = + a); 将上面代码中的 ref 关键字去掉,就成了按值传递,再把 ref 换成 out 试试!方法中的参数(II) ref 与 out 的区别:1、ref 必须在函数体外初始化。2、out 必须在函数体内初始化,在外面初始化没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。3、两者在函数体的任何修改都将影响到外面。ref-接收外面的值out-向外界输出值变长参数 使用变长参数可以接收多个不确定个数的参数,用关键字 params。变长参数必须位于形参列表的最后,而且只能是一维数
3、组。params 不能与 ref 和 out 联用:static void print(params int a) Console.Write(有0个元素,a.Length); foreach(int i in a) Console.Write(i); static void Main() int arr = 3, 9, 2; print(arr); print(35, 67, 88, 91, 16); print();方法的重载 方法名相同,但方法中参数参数的个数、类型及顺序不同,即为重载 方法的返回值不参与重载。如下:void fun(int x);int fun(int x);void
4、fun(int x);int fun(int x, int y);void fun(int x, double y);void fun(double y, int x);不是重载,编译报错是重载,可以使用是重载,可以使用构造方法(I) 完成对类实例对象的初始化初始化工作。一般(通过方法的参数)用来对类的成员变量进行初始化操作。有以下几点特征:1、具有与类相同的名称、具有与类相同的名称2、没有返回值类型、没有返回值类型3、该方法内部没有、该方法内部没有 return 语句语句 当一个新的对象生成时,构造方法由系统自动调用自动调用,而且只执行一次只执行一次例:战士们进入阵地时,每个人都会自动完成卧
5、倒、瞄例:战士们进入阵地时,每个人都会自动完成卧倒、瞄准等动作,指挥官没有必要一一告诉准等动作,指挥官没有必要一一告诉构造方法(II) 每个类都必须要有构造方法 如果我们在类中没有显式地定义构造方法,系统将提供一个不带参数的、什么都不做的构造方法 一旦我们定义了构造方法,系统将不再提供默认的构造方法class Student int id; string name; public Student (int id, string name) this.id = id; this.name = name; 一旦在构造方法前面一旦在构造方法前面加上了加上了void 关键字,关键字,那么它将成为一个普
6、那么它将成为一个普通的成员方法!通的成员方法!构造方法的重载class Student public int id = 2; public string name = Tom; public int age = 21; public Student(int id, string name, int age) this.id=id; this.name=name; this.age=age; public Student(int id, string name) this.id=id; this.name=name; public Student()/以下是主方法中的操作以下是主方法中的操作pu
7、blic static void main(Stringargs) Student stu1=new Student(); Student stu2=new Student(103,Mike); Student stu3=new Student(107,Mary,18);含有三个参数的构造方法含有三个参数的构造方法含有二个参数的构造方法含有二个参数的构造方法无参构造方法无参构造方法构造方法与 this 在一个构造方法中可以使用this关键字调用它的另一种重载形式,如:public Student(int id, string name) this.id = id; this.name = na
8、me;public Student(int id, string name, int age): this(id, name)/此代码调用了上面的重载形式此代码调用了上面的重载形式 this.age = age;析构方法 以符号开头,用于执行清除关闭工作 不接收参数、没有返回值、没有修饰符 析构方法不能重载 一个类只能有一个析构方法 在垃圾收集器抛弃一个对象之前,先调用析构方法 不能手动调用,只能由垃圾器调用静态成员 在类中,用 static修饰的静态成员从一开始就存在,而无须用 new 来创建;也就是说在类的对象产生之前,static 成员就已经出现了;没有用static修饰的成员被称为“实
9、例成员” 无论创建多少类的实例对象,它们都共用同一个(组)static 成员 static 成员只能只能用类名直接调用 静态方法中不能不能使用 this 关键字静态与实例成员的相互调用 静态方法不能调用实例成员 实例方法可以调用静态成员静态成员空间静态成员空间实例空间实例空间实例空间实例空间实例空间实例空间装箱与拆箱 是值类型与引用类型间的相互转换 在C#中每一种类型都是从System.Object类派生而来的 值类型转换成对象:装箱 对象转换成值类型:拆箱int myInt1 = 28;object myObject = myInt1;/装箱string str = myInt1.ToStr
10、ing();/装箱int myInt2 = (int)myObject;/拆箱object 与 System.Object 是相同的is 运算符 is 运算符用于检查某一变量或对象是否与指定类型兼容,以确定是否可以进行相应的转换static void Main() Test t = new Test(); Console.Write(20 is int);/输出true Console.Write(20 is long);/输出false Console.Write(t is Test);/输出true Console.Write(t is object);/输出trueclass Test int num = 3; public void fun() Console.Write(num);