结构
结构介绍
1、访问修饰符 struct 结构名{}
2、结构不能定义默认的构造函数,但可以定义含有参数的构造函数
3、使用结构的方法与使用类的方法相同
何时使用结构
结构是一种轻量级的数据类型,适合用于表示占用存储空间小的数据类型
1、在逻辑上表示某个值,与基本类型相似
2、占用内存小于16字节
3、不必频繁转为引用类型
接口
接口介绍
1、是一种公共方法和属性的集合
2、访问修饰符 interface 接口名{}
3、接口中定义的属性和方法都是公公的,不是继承和私有的。在c#中定义接口时,不允许显式指定接口成员的可访问性,而且接口成员默认为公有的。
4、接口中只能包含普通方法和属性,而不能包含其他内容(如构造函数、变量等)
5、接口中的方法和属性只有签名部分,而没有实现部分,甚至连方法名后面的{}也不能有
使用接口
1、当一个类实现多个接口时,中间用','隔开
2、接口可继承接口
3、如果一个类继承接口,则该类必须实现该接口的所有方法和属性
显示接口实现
1、在显式实现接口时,类中对应于接口中的方法或属性口有接口名做前缀。而且方法或属性不允许有public、protected等访问修饰符
2、当显式实现接口时,类中用于实现接口的方法只能只能通过接口来调用,而不能通过类的实例来调用。
注意:
当要实现接口时,应优先使用普通的接口实现方式,除非有非常充分的理由,否则不要轻易使用显式接口。
自动生成接口代码框架
在vs.net中,将鼠标指针放在类之后的接口名上,在接口名上会出现一个蓝色空心的小矩形,将鼠标放在小矩形上,会显示一个灰色背景的按钮,单击按钮,弹出相应菜单,点击相应命令就可。
接口和抽象类的比较
当类从接口继承时,相同的接口成员要在派生类中实现多次。而当类从抽象类中继承时,派生类中公用的代码可以放在抽象类中,从而在派生类中不必在编写重复代码