在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C#语法中八武器(8种方法)
方法(Method)的定义: 方法是一个已命名的语句集。可以将方法视为函数或者子程序相似的东西。每个方法 都有一个名称和一个主体,方法主体包含了调用方法时实际执行的语句。可以为大多数方法提供一些数据来进行处理,并让它返回一些信息(通常是处理结果)。方法是一种基本的、功能强大的编程机制。
现已学的C#的8种方法: 1.一般的方法: a.返回类型方法: 格式:方法类型 方法名( 参数《可以没有参数》){return ;} b.无返回类型方法: 格式:void 方法名(){执行代码}
2.构造函数(方法): a.结构的构造函数: 结构(struct)是值类型的(轻量级)。其值是可以拷贝的。存放在栈上,结构的构造函数必须有有参数,如要生成没有参数的结构函数只能是系统来生成的缺省结构函数,自己无法生成,结构的构造函数不会自动初始化字段, 格式: public 结构的名字(参数) { 需要初始化的变量 } 构造函数名必须和结构名相同
b.类的结构函数 类(class)是引用类型的(重量级),其值是不能拷贝的,拷贝的是引用(地址)。存放在堆上,类的构造函数可以没有参数(类名()),系统不会自动生成缺省结构函数,类的构造函数会自动初始化字段, 格式: public 类的名字 (参数) {需要初始化的变量} 构造函数名必须和类名相同
c. 抽象类的结构函数:
格式: public 类名(){需要初始化的变量} 构造函数名必须和抽象类名相同
例: B a = new B(); 不能实例化抽象类,所以只能实例化子类。用子类去调用抽象类的方法。 string aa = " "; string e = a..bb(aa); 或省略string aa= ” ”; 直接string e = a.bb(“aa”); 因为参数aa是string类型,所以在执行方法参数也要是string类型。方法执行时bb.(aa) 里的aa参数必须是实参,必须要赋值。 public abstract class A {public static string a; 可以使用静态关键字生成变量,但子类是无法调用的。 public A() { } 抽象类的构造函数 public abstract string bb(string aa);} 抽象方法 public class B : A {public override string bb(string aa) { return "";}
3.析构函数(方法):
功能:对象的铲除由析构函数来铲除。
格式:~ 类名(){}
特征:析构函数不能有参数,不能任何修饰符而且不能被调用。
注意:不能在结构中声明析构函数。
class Tally public Tally( ) 构造函数 {instanceCount+ +;} ~Tally( ) 析构函数 {instanceCount- -;}
强制启动垃圾回收器的方法:system.GC.collect();
当垃圾回收器开始工作,你的程序的其他线程都会停下来。尽量避免使用析构函数。
4.静态方法: Static(静态关键字) 格式:public static 方法的类型 方法名(参数){} 作用:需要经常重复使用的内容会使用static。 注意:加上static关键字的方法是密封且不可继承的。
5.隐藏方法: 继承中new (关键字)
功能:如果基类和子类中有2个同样的名字的方法,而此时子类的同名方法是自己的方法,并不是调用基类,为了可以区分2个方法,可以用new关键字来隐藏基类的同名的方法。实现使用子类里自己的方法。
格式:public void fun( ){} 调用基类的方法名;
public new void fun( ){} 子类的方法名;
注:如果在子类里使用了new关键字,那就无法再去调用同名的基类的方法。
6.虚方法: Virtual(关键字)
功能:实现基类调用子类的方法。
只有在基类才能使用(可以没有overiide),如果在基类里有virtual,但在子类里没有override则表示基类方法可以被调用覆盖,但现在不需要覆盖,如果需要可以在子类里添加override。
格式:public virtual void fun(){}
Override (关键字)
只有在子类才能使用,出现override必须要有virtual. 格式:public override void fun(){} 注:virtual和override两个方法名称完全相同。 virtual和override两个方法具有相同的访问限制。 virtual用在基类的方法里,override用在子类的方法里。
7.抽象方法: 特征:抽象方法是隐式的虚方法。 只允许在抽象类中使用抽象方法声明。 抽象方法声明不提供实际的实现,所以没有方法体。 方法声明只是以一个分号结束,并且在签名后没有大括号{}(没有方法体) 实现由一个重写方法override提供,此重写方法是非抽象的一个成员。 在抽象方法声明中使用static或virtual修饰是错误的。
格式:public abstract 方法名( ); 没有{} 注:抽象方法声明是无法执行方法体,所以方法体只能在抽象类的子类里去执行。
8.密封方法: 功能:针对虚方法(必须出现virtual)到此为止,无法再被重写。密封方法(sealed方法)是这个方法的最后一次实现。 格式:public sealed override void 方法名( ){} 注意:密封方法不一定需要放在密封类内里。
现已学的C#的4大类: 1.一般类: 格式:class 类名{}
2.静态类: Static(关键字) 格式:static class 类名{} 作用:需要经常重复使用的内容会使用static。 注意:里面的所有成员都是静态的,都需要加上static关键字,是密封且不可继承的。
3.抽象类: Abstract (关键字) 格式:abstract class 类名{} 特性:抽象类不能实例化。(不能创建对象 即无法使用new命令指定对象) 抽象类可以包含抽象方法,也可以包含其他方法。 不能用sealed修饰符修改抽象类,这意味这抽象类不能被继承。(不能为子类) 从抽象类派生的非抽象类必须包括继承的所有抽象方法的实现。(只能为基类) 4.密封类: Sealed (关键字) 格式: sealed class 类名{} 功能:继承到此为止,无法再被继承。 特征:可以组织一个类成为基类。(结构为密封类) 注意:结构默认为sealed,任何情况下不能从结构继承。 |
请发表评论