第二十节 泛型、partial类、枚举、结构
视频链接:刘铁猛老师的《C#语言入门详解》
https://www.youtube.com/watch?v=EgIbwCnQ680&list=PLZX6sKChTg8GQxnABqxYGX2zLs4Hfa4Ca
泛型(generic)
泛型类示例
示例: 既不产生类型膨胀,也不产生成员膨胀。
泛型接口示例
示例1:一个类要实现泛型接口,那么该类必须是泛型类。
示例2:如果一个类实现了一个确定类型的泛型接口,那么这个类可以不是泛型类。
示例3:C#自定义的一些泛型类、接口:集合等。
泛型方法示例
示例:这个算法作用将2个整型数组合并成一个数组
对比:上面如果要实现double类型的合并的话,必须添加新的double类型的Zip方法,导致了方法成员膨胀。
使用泛型方法解决。
泛型委托示例 Action<>、Func<>、与Lambda表达式的配合使用
示例1:Action<>,只能去引用没有返回值的方法
示例2: Func<>,去引用有返回值类型的方法
示例3:泛型委托与Lambda表达式的配合使用
partial类
C#允许把一个类分成两部分或多部分编写,而且每个部分都可以以自己的速度进行版本更新。可以减少类的派生
这个partial类允许用不同语言写,例如:C#和XAML语言写同一个类,WPF示例。
枚举类型
示例1:
示例2:比特位用法
判断person会不会做饭
结构体
结构体是一种值类型。copy对象的时候,copy完整的对象。
结构体不能由class,struct派生而来,只能由接口派生
结构体不能创建无参的构造方法。
创建实例对象在栈上,创建的实例也存放在栈上。不像类的创建的实例(new Person();)在堆上
示例1:装箱/拆箱
示例2:不像class对象copy,而是整个对象的内存都复制了。