C#基础精华02(静态类,值类型,引用类型,枚举,结构,ref与out)
静态类
静态类不能被其他类继承,静态成员亦不能被继承(访问的是同一个),备注1.
静态类只能继承自Object类。(静态类不能继承自其它类。)
继承(多态)、静态本身就是相反的。
静态类不能实现任何接口, (因为接口中的成员都是实例成员。*)
sealed:(*)密封类,不能被继承。
sealed关键字,表示类不能被继承。(密封类)
密封类表示不能被继承。String类。.net系统中本身对字符串有很多特殊处理(为String开了很多“绿灯”,String有很多特权,比如:不可变性,字符串池等等。),防止别的类继承后造成混乱。商业问题。
禁止子类重写父类的方法。
静态类的本质abstract+sealed(*,知道即可)static
静态类不能被实例化:abstract
静态类不能被继承:sealed
值类型:
int、char、double、float、long、short、byte、bool、enum、struct、decimal
值类型都是派生自ValueType
值类型不能继承,只能实现接口。
引用类型:
string、数组、类(子定义数据类型)、接口、委托、
int[] n={1,2,3};//引用类型。
引用类型都派生自:Object
引用类型可以继承(类之间可以继承)
枚举
一组和数值有关的常量
enum Gender { Male,Female}
enum Weeks { 星期日=0,星期一,}
把字符串转换成枚举Gender g = (Gender)Enum.Parse(typeof(Gender), "Male");
结构
就是小类,值类型
不能继承类
可以实现接口
不能有显示无参构造函数(隐式)
结构中不能给字段赋初始值
ref与out
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。
2、使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字。以满足匹配。
3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
ref :可进可出,要赋初值
out :只出 不进 可以没有初值