C#初步学习5(个人笔记,不喜勿喷)
初步学习
集合
众所周知,集合相较于数组可以自动扩容,而C#中的集合还有所不同
C#中的集合位于“Collections”命名空间下,使用前要进行引用该命名空间
与“Java”中不同的是,C#中的集合本身可以不声明其数据类型,当然也可以对不同的数据类型的变量(常量)进行存储
C#中集合本身的写法:
ArrayList 集合名 = new ArrayList();
例:所写代码及其运行结果如下

而由于其储存的内容数据类型各不相同,所以其内有其他类的实例,不可调用其中的方法
而且也不是类型安全的
而我们可以使用C#中集合的泛型来解决该问题
C#中集合本身的写法:
List<数据类型> 集合名 = new List<数据类型(与前面相同)>();
而这种类型的集合和java中的集合相差无几
泛型
泛型是在C#中允许我们延迟声明的数据,由于其形参数据类型为顶级父类“object”,所以可以接受所有数据类型
延迟声明:指可以暂时不定义数据的数据类型和值,等到使用时再完全声明
例:所写代码及其运行结果如下

可见,泛型在方法中可以作为返回值,形参,变量
当然,类也可以使用泛型
而在类中,若类和在其内的方法都使用同一泛型,则方法中的泛型会覆盖类中的泛型
例:所写代码及其运行结果如下

而不论是在方法中使用泛型,还是在类中使用,都可以对其进行约束
约束格式如下:
方法名(类名)<T,U>() where T : struct
U: class {
....
}
而约束会限制实参的类型等
struct:实参必须是基本数据类型
class:实参必须是引用数据类型(可进行装箱操作的的类型也可以)
new():允许该方法或类内可以初始化对应的泛型,且该约束只能放在最后
基类名:实参必须是该基类或其派生类
接口名:实参必须是该接口或实现该接口的数据
基本约束就是上面的,而不同的约束可以共同约束,而有些不可进行共同约束

浙公网安备 33010602011771号