记录一下今天学习的C#中的一些要点:
C#与C++等语言最大的区别莫过于C#中的接口。接口类似与类,但也有区别,如下:
1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数。
4、接口不能进行运算符的重载,类可以进行运算符重载。
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。
一、属性
C#中提供了属性成员,通过设置一个属性成员可以对对象或类进行某些特性的设置或查询。
设置属性用的代码快为set ,查询为get.示例如下:
public class Date
{
private int Day =7;
public: int day //设置属性信息,为int类型
{
get {return Day;}
set
{
if((value>0)&&(value<8)) //value为一个隐式参数,参数类型是属性的类型
{
Day=value;
}}}}
}
二、静态函数不对特定实例进行操作,在静态方法中引用this会导致编译错误。
三、结构
结构具有以下特点:
1. 结构是值的类型
2. 向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。
3.结构的实例化可以不使用new运算符。
4. 结构可以声明构造函数,但他们必须带参数。
5. 一个结构不能从另一个结构或类继承。所有结构都直接继承自System.ValueType,后者继承自System.Object。
6. 结构可以实现接口。
7.在结构中初始化实例字段是错误的。
四、类
proteced 的可访问性是只有子类(派生类)才能访问proteced成员,基类和外部代码都不能访问proteced成员。
override 类型表示重写。重写方法只能用于重写基类中的虚函数。不能与new 、static、或者virtual同时使用。
virtual 修饰符不能与private、static、abstract或者override修饰符同时使用。
五、抽象类
抽象类的定义形式为:
访问修饰符 abstract class 类名:基类或接口
{
}
抽象类的实现需要继承抽象类的子类的对象来实现。
抽象类与非抽象类的区别如下:
1.抽象类不能直接实例化。
2.抽象类中可以包含抽象成员,但非抽象类不可以。
3.抽象类不能被密封。
抽象类与接口的区别主要如下:
1. 他们的派生类只能继承一个基类,即只能直接继承一个抽象类,但可以继承任意多个接口。
2.抽象类中可以定义成员的实现,但接口中不可以。
3. 抽象类中可以包含字段、构造函数、析构函数、静态成员或常量等,接口中不可以。
4。抽象类中的成员可以是私有的(只要他们不是抽象类的)、受保护的、内部的或受保护的内部成员(受保护的内部成员只能在应用程序的代码或派生类中访问),但接口中的成员必须是公共的。
-----------------------------------------------------------------end------------------------------------------------------------------------