您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c#重载、静态方法、构造函数析构函数
方法的格式•既无参数也无返回值的方法,如:voidfun(){}•有参数但无返回值的方法,如:voidfun(inta,charch){}•无参数但有返回值方法,如:doublefun(){}•既有参数又有返回值的方法,如:intfun(string[]s){}方法中的参数(I)•方法中参数的传递值传递、引用传递-ref、输出参数-out,例:classTest{staticvoidMain()voidfun(refintx,refinty){{intt=x;inta=3,b=5;x=y;newTest().fun(refa,refb);y=t;Console.WriteLine(a=+a);}Console.WriteLine(a=+a);}}将上面代码中的ref关键字去掉,就成了按值传递,再把ref换成out试试!方法中的参数(II)•ref与out的区别:1、ref必须在函数体外初始化。2、out必须在函数体内初始化,在外面初始化没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。3、两者在函数体的任何修改都将影响到外面。ref-接收外面的值out-向外界输出值变长参数•使用变长参数可以接收多个不确定个数的参数,用关键字params。变长参数必须位于形参列表的最后,而且只能是一维数组。params不能与ref和out联用:staticvoidprint(paramsint[]a){Console.Write(有{0}个元素,a.Length);foreach(intiina){Console.Write(i);}}staticvoidMain(){int[]arr={3,9,2};print(arr);print(35,67,88,91,16);print();}方法的重载•方法名相同,但方法中参数的个数、类型及顺序不同,即为重载•方法的返回值不参与重载。如下:voidfun(intx);intfun(intx);voidfun(intx);intfun(intx,inty);voidfun(intx,doubley);voidfun(doubley,intx);不是重载,编译报错是重载,可以使用是重载,可以使用构造方法(I)•完成对类实例对象的初始化工作。一般(通过方法的参数)用来对类的成员变量进行初始化操作。有以下几点特征:1、具有与类相同的名称2、没有返回值类型3、该方法内部没有return语句•当一个新的对象生成时,构造方法由系统自动调用,而且只执行一次例:战士们进入阵地时,每个人都会自动完成卧倒、瞄准等动作,指挥官没有必要一一告诉构造方法(II)•每个类都必须要有构造方法•如果我们在类中没有显式地定义构造方法,系统将提供一个不带参数的、什么都不做的构造方法•一旦我们定义了构造方法,系统将不再提供默认的构造方法classStudent{intid;stringname;publicStudent(intid,stringname){this.id=id;this.name=name;}}一旦在构造方法前面加上了void关键字,那么它将成为一个普通的成员方法!构造方法的重载classStudent{publicintid=2;publicstringname=Tom;publicintage=21;publicStudent(intid,stringname,intage){this.id=id;this.name=name;this.age=age;}publicStudent(intid,stringname){this.id=id;this.name=name;}publicStudent(){}}//以下是主方法中的操作publicstaticvoidmain(String[]args){Studentstu1=newStudent();Studentstu2=newStudent(103,Mike);Studentstu3=newStudent(107,Mary,18);}含有三个参数的构造方法含有二个参数的构造方法无参构造方法构造方法与this•在一个构造方法中可以使用this关键字调用它的另一种重载形式,如:publicStudent(intid,stringname){this.id=id;this.name=name;}publicStudent(intid,stringname,intage):this(id,name)//此代码调用了上面的重载形式{this.age=age;}析构方法•以~符号开头,用于执行清除关闭工作•不接收参数、没有返回值、没有修饰符•析构方法不能重载•一个类只能有一个析构方法•在垃圾收集器抛弃一个对象之前,先调用析构方法•不能手动调用,只能由垃圾器调用静态成员•在类中,用static修饰的静态成员从一开始就存在,而无须用new来创建;也就是说在类的对象产生之前,static成员就已经出现了;没有用static修饰的成员被称为“实例成员”•无论创建多少类的实例对象,它们都共用同一个(组)static成员•static成员只能用类名直接调用•静态方法中不能使用this关键字静态与实例成员的相互调用•静态方法不能调用实例成员•实例方法可以调用静态成员静态成员空间实例空间实例空间实例空间……装箱与拆箱•是值类型与引用类型间的相互转换•在C#中每一种类型都是从System.Object类派生而来的•值类型转换成对象:装箱•对象转换成值类型:拆箱intmyInt1=28;objectmyObject=myInt1;//装箱stringstr=myInt1.ToString();//装箱intmyInt2=(int)myObject;//拆箱object与System.Object是相同的is运算符•is运算符用于检查某一变量或对象是否与指定类型兼容,以确定是否可以进行相应的转换staticvoidMain(){Testt=newTest();Console.Write(20isint);//输出trueConsole.Write(20islong);//输出falseConsole.Write(tisTest);//输出trueConsole.Write(tisobject);//输出true}classTest{intnum=3;publicvoidfun(){Console.Write(num);}}
本文标题:c#重载、静态方法、构造函数析构函数
链接地址:https://www.777doc.com/doc-4702768 .html