c#重载、静态方法、构造函数析构函数ppt课件.ppt
方法的格式,既无参数也无返回值的方法,如: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;Console.WriteLine(a = + a);Console.WriteLine(a = + a); 将上面代码中的 ref 关键字去掉,就成了按值传递,再把 ref 换成 out 试试!,方法中的参数(II),ref 与 out 的区别:1、ref 必须在函数体外初始化。2、out 必须在函数体内初始化,在外面初始化没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。3、两者在函数体的任何修改都将影响到外面。,变长参数,使用变长参数可以接收多个不确定个数的参数,用关键字 params。变长参数必须位于形参列表的最后,而且只能是一维数组。params 不能与 ref 和 out 联用:,方法的重载,方法名相同,但方法中参数的个数、类型及顺序不同,即为重载方法的返回值不参与重载。如下:void fun(int x);int fun(int x);void 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 语句当一个新的对象生成时,构造方法由系统自动调用,而且只执行一次例:战士们进入阵地时,每个人都会自动完成卧倒、瞄准等动作,指挥官没有必要一一告诉,构造方法(II),每个类都必须要有构造方法如果我们在类中没有显式地定义构造方法,系统将提供一个不带参数的、什么都不做的构造方法一旦我们定义了构造方法,系统将不再提供默认的构造方法,class Student int id; string name; public Student (int id, string name) this.id = id; this.name = name; ,一旦在构造方法前面加上了void 关键字,那么它将成为一个普通的成员方法!,构造方法的重载,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(),/以下是主方法中的操作public 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 = name;public Student(int id, string name, int age): this(id, name)/此代码调用了上面的重载形式 this.age = age;,析构方法,以符号开头,用于执行清除关闭工作不接收参数、没有返回值、没有修饰符析构方法不能重载一个类只能有一个析构方法在垃圾收集器抛弃一个对象之前,先调用析构方法不能手动调用,只能由垃圾器调用,静态成员,在类中,用 static修饰的静态成员从一开始就存在,而无须用 new 来创建;也就是说在类的对象产生之前,static 成员就已经出现了;没有用static修饰的成员被称为“实例成员”无论创建多少类的实例对象,它们都共用同一个(组)static 成员static 成员只能用类名直接调用静态方法中不能使用 this 关键字,静态与实例成员的相互调用,静态方法不能调用实例成员实例方法可以调用静态成员,静态成员空间,实例空间,实例空间,实例空间,装箱与拆箱,是值类型与引用类型间的相互转换在C#中每一种类型都是从System.Object类派生而来的值类型转换成对象:装箱对象转换成值类型:拆箱int myInt1 = 28;object myObject = myInt1;/装箱string str = myInt1.ToString();/装箱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);/输出true,class Test int num = 3; public void fun() Console.Write(num); ,