C#集合、泛型、字典、异常

张开发
2026/4/18 18:11:50 15 分钟阅读

分享文章

C#集合、泛型、字典、异常
一、ArrayList集合C# 中的集合是用来存储、管理一组数据的类。ArrayList集合跟数组很相似同样都可以根据下标控制值但是数组的大小是固定的而ArrayList集合相当于一个动态的数组它可以使用方法实现添加删除等操作。但是数组可以是多维的而ArrayList集合只能是一维的。看一个案例来使用ArrayList集合和类一样需要先实例化对象。这里的array就是集合的名字前面的ArrayList则说明这是一个list集合。这里我们从键盘输入循环存在list集合中。集合的添加就是Add因为list是一个类我们就可以使用(.)来调用集合的方法括号中就填需要写入的内容。这里集合的遍历一般用foreachfor循环也是可以的。但是我们集合一般是不需要更改值所以可以直接用foreach遍历。来看一些比较常用的list方法:这里的insert代表插入的意思后面的0指的是下标这里是从控制台插入一个值到指定下标0处。remove这里是移除的意思从list集合中去寻找第一个值为0的然后将他移除。而removeat则是在list集合中寻找下标为0的值并将它移除。removerange是指从0这个下标开始移除移除5个。clear则是将list集合中的所有元素全都移除。contains则是在这个集合中寻找0这个值是否在集合中返回true和false。indexof则是寻找这个集合中第一个找到的值找到则返回下标或者否则返回-1。lastindexof就是寻找最后一个。二、队列Queue队列和list集合一样都可以存储任意类型的数据它遵循先进先出的原则但他不能获得指定位置的数据只能存入和取出取出后队列中的元素会自动删除。队列中的元素只能先进先出队列的出口端叫做队头队列的入口端叫做队尾。这里就创建了一个简单的队列string这个则是对这个队列进行了限制限制他只能是string类型的元素。(.Enqueue)这里就是入队了为这个队列添加元素。(.peek)则是查看这个队列的第一个元素但是不把这个队列删除。出队则直接使用循环读取出来就好了但是读取出来之后队列中就不会有值了。.count这个是查看队列中的元素个数。Dequeue这个则是移除并返回队首元素若队列为空则抛出InvalidOperationExceptionclear则是清空所有元素。三、栈栈和前面的list一样都是存放数据的但是这个得遵守先进后出的原则。他和队列一样不能获得指定位置的数据只能存入和取出取出后栈中的元素会自动删除。先实例化对象push就是将括号中的string类型的元素压入栈中。count则是查看栈中的数量。peek则是查看栈顶的元素。pop就会将栈中的元素一个一个弹出栈。count是查看栈中剩余的元素数量。四、泛型了解泛型就得先了解装箱和拆箱首先所有的值类型和引用类型的基类是object类型。而装箱则是将值类型转换为引用类型拆箱就是将引用类型转换为值类型。用装箱拆箱就可以做到类型之间相互切换。而泛型则是我们在处理不同数据但比较相似的代码时就可以使用。它可以使代码更加通用避免代码冗余。这就是一个泛型方法的用法下面再math1类中定义了一个add的泛型方法其中的值的类型是T类型。然后在main方法中测试先实例化对象然后调用add这个方法但是传入的数据类型是不同的得到的数据类型也会不同。泛型方法可以将不同类型的数据放在同一个泛型方法中运行。而这里就是泛型类的案例这里创建了一个泛型类里面的字段_item也是泛型的我们使用get方法和put方法来实现不同类型值在泛型类中通过方法来传递。泛型约束泛型约束是为了让他对指定的类型来使用比如where T : struct这个就是为了只让值类型数据使用。这里就对add这个泛型方法进行了限制。只能输入值类型的数据。如果使用了string类型就会报错因为被限制了。五、字典字典是键值对的集合keyvalue。在字典中键key不可重复并且不能为空但是值value可以为空。例Dictionarystring, int ageDict new Dictionarystring, int();这一句就是创建了一个字典中的string代表了键的类型后面int代表了值的类型。在字典中的添加就使用Add键值如果键已存在会抛出ArgumentException。字典中的键就相当于数组中的下标可以直接用[键]来找到对应的值。TryGetValue则是查看这个字典中是不是有这个键如果没有就会抛出异常。remove则可以通过键来删除字典中的元素。遍历整个字典我们通常使用foreach。它可以直接读取字典中的键或者值。六、异常之前我们编写程序时会常常出现bug这会直接导致程序还未进行完就奔溃。为了不让这程序直接奔溃我们就需要使用到异常让他抛出异常原因而不是奔溃程序。ExceptionTest exceptionTest new ExceptionTest();这里我们得先实例化对象然后才能调用里面的异常。throw 是主动抛出异常执行到这个语句时会停止之后的代码进行会寻找就近的try catch语句来进行异常处理。如果没有try catch 语句则会程序奔溃。try中放入的是有可能出现异常的代码而catch则是处理异常的代码。finally用于资源的释放避免程序奔溃导致资源泄露。catch可以在后面继续添加因为可能不止一个异常所以需要多重处理。

更多文章