您的位置:首页 > 编程语言 > C#

C#笔记

2015-09-20 08:04 399 查看

C#笔记

静态方法不对特定实例进行操作,不与实例相关联,它属于类。因为静态方法与类相关联,所以调用静态方法不需要创建类实例,只需要类名和方法名,中间加上点号。静态方法只能访问静态变量,不能访问非静态变量。

非静态方法既可以访问类中的静态成员,也可以访问非静态成员。非静态方法属于对象,需要通过实例化的对象进行访问。

在类的方法中局部变量可能与类的变量重名,C#引入this解决这一问题。this相当于类的对象,表示对调用该方法的对象的引用。而静态变量从根本上来说是属于类的,因此不能使用this访问静态变量。

全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件,其作用域是整个源程序。外部变量的说明符为extern。

ref 参数类型 参数名 引用类型可以改变参数的值,但是值类型不可以。

当返回值超过一个的时候,可以使用输出参数。声明格式:

(out 参数类型 参数名 )

在函数的实参中,输出类型的那个参数前要加上out关键字,使用out参数时必须看成未赋值的,即使已经传值给它。在return 语句返回值之前,必须给out参数赋值。

使用foreach语句对数组进行遍历,只能采用只读的方式,不能修改任何元素的值。

数组类型 [,] 数组名

数组类型[,] 数组名 =new 数组类型[行,列]

数组本身就是一种引用类型

函数定义时参数列表加关键字params,方法被调用时可以传递一个值给参数,也可以传递给一个参数或者任意个参数值,也就是参数的个数是任意的,这样就保证了方法的灵活性。

继承

C#继承中字段、属性、方法、事件、索引指示器可以继承,值类型、构造函数、析构函数不可以继承。

C#是单继承,可传递(A派生出B,B派生出C,则C既继承B中的成员又继承A中的成员),可填不可删(派生类可以添加新的成员,但是不可以删除从基类继承的成员)

base 关键字在派生类中直接访问基类成员 base.基类变量;base.基类方法();

base关键字可以指定创建派生类时应调用的基类构造函数,并且调用基类的构造函数完成对基类成员的初始化。

函数(,):base(,){}

继承中的构造函数:

调用顺序:基类的构造函数——>派生类的构造函数

执行数序:基类——>派生类

执行基类的构造函数:无参——>有参

非虚方法重载,函数名必须相同,参数列别必须不同

方法重写即在派生类中重新定义虚方法,需要使用override修饰符,函数名、参数列表必须与基类相同。

抽象

抽象类的使用

abstract class 类名{}

抽象类只能作为其他类的基类,不能直接实例化

抽象类可以包含抽象方法,从抽象类派生来的非抽象类必须包含继承的所有抽象方法的实现。

抽象函数的使用

访问修饰符 abstract 返回值 方法名();

抽象方法没有实现,方法定义的后面只是分号;

抽象方法只能在抽象类中声明,不能把抽象方法声明为static

抽象方法在派生类中不能使用base关键字来进行访问。

可以使用抽象方法重载基类的虚函数。类A声明了自己的虚函数F,派生类B用抽象方法重载了这个虚方法,这样B的派生类C就可以重载F并提供自己的实现。

密封

避免无限制的继承

密封类

访问修饰符 sealed class 类名{}

密封类不能被继承

密封类不能使用abstract关键字

密封方法

密封方法不可以被重写,但是密封方法必须对基类的虚方法进行重写,因此sealed 与override一起使用。类B对类A的虚函数进行重写,同时对F()方法使用了sealed修饰符,成为一个密封方法,在B的派生类C中,不能重写F()方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: