C#中Array和ArrayList的区别及泛型

1. Array类型的变量在声明的同时必须进行实例化(至少的初始化数组的大小),而ArrayList可以只先声明。

2. Array只能存储同构的对象,ArrayList可以存储异构变量。

这里有一个装箱和拆箱的概念,在以后会用到:如将String,int等隐式转化为Object是装箱,将Object强制转化为string,int是拆箱。在向Arraylist添加数据的过程中,对象先被装箱为Object,需要调用时再拆箱为对应的对象。但在这个过程中,强制转化加上ArrayList的异构特性,可能导致很多问题。由此提出了泛型的概念。

3. 在CLR托管的存放方式.

Array是始终连续存放的,ArrayList不一定是。

4. 初始化大小

Array对象的初始化必须制定大小,且创建后的数组大小是固定的,而ArrayList的大小可以动态指定。

关于泛型:

ArrayList是一个非泛型集合类,添加到ArrayList中的任何引用或值类型都将隐式向上强制转换为Object,如果项是值类型,则必须在将其添加到列表中是进行装箱操作。

泛型是最常见的用途是创建集合类。.Net Framework类库在Collection.Generic命名空间中包含ijge泛型集合类。List<T>类是ArrayList类的泛型等效类。使用大小可以按需动态增加的数组实现IList泛型接口。动态数组的好处是不必须事先设置较大的数组,减少不必要的内存开销。

如何自己真正的分析并解决电脑蓝屏

这篇文章不是写给不愿意探究问题的小白写的。及时你之前没做过蓝屏分析,只要你仔细看这篇文章,还是可以获得收获的。

这里我就不再说什么请拔插内存,清理风扇,重装系统等解决方法了,这种东西在百度知道搜索一堆一堆的。不能说这些没有道理,不过基本上都是千篇一律且效率低下。

首先我们需要一款分析软件叫做WinDbg,是一款强大的内核态调试工具,下载地址如下:

32位(x86)版本:百度网盘

x64位版本:百度网盘

下载完成后我们运行windbg.exe,按下ctrl+s添加符号表(此步必须)

QQ截图20150303095439

然后我们就可以打开dump文件了,这个文件请从系统目录中拷贝出来,比如win8是C:\Windows\Minidump\

QQ截图20150303095712

弹出的对话框请选中复选框并选择no

QQ截图20150303100018

 

接下来等待一段时间,日志窗口会显示Loading Kernel Symbols…

最后显示的结果类似下面

QQ截图20150303100228

System Uptime是系统运行多长时间之后发生了崩溃,而Probably caused by后面就是崩溃的原因,这里看到是NETIO.SYS,所以我们尝试了重新安装网卡的所有驱动后,问题解决。