通过泛型可以定义类型安全的数据结构,而无须使用实际的数据类型。这能够显著提高性能并得到更高质量的代码,因为您可以重用数据处理算法,而无须复制类型特定的代码
1 解决频繁的装相,拆箱,提高性能
2 解决了类型安全还是有使用object引来的问题,显示转换的时候可能出异常
在 .NET 2.0 中,泛型在 IL(中间语言)和 CLR 本身中具有本机支持。在编译一般 C# 服务器端代码时,编译器会将其编译为 IL,就像其他任何类型一样。但是,IL 只包含实际特定类型的参数或占位符。此外,一般服务器的元数据包含一般信息。
客户端编译器使用该一般元数据来支持类型安全。当客户端提供特定类型而不是一般类型参数时,客户端的编译器将用指定的类型实参来替换服务器元数据中的一般类型参数。这会向客户端的编译器提供类型特定的服务器定义,就好像从未涉及到泛型一样。这样,客户端编译器就可以确保方法参数的正确性,实施类型安全检查。有趣的问题是,.net 如何将服务器的一般 IL 编译为机器码。原来,所产生的实际机器码取决于指定的类型是值类型还是引用类型。如果客户端指定值类型,则 JIT 编译器将 IL 中的一般类型参数替换为特定的值类型,并且将其编译为本机代码。但是,JIT 编译器会跟踪它已经生成的类型特定的服务器代码。如果请求 JIT 编译器用它已经编译为机器码的值类型编译一般服务器,则它只是返回对该服务器代码的引用。因为 JIT 编译器在以后的所有场合中都将使用相同的值类型特定的服务器代码,所以不存在代码膨胀问题。如果客户端指定引用类型,则 JIT 编译器将服务器 IL 中的一般参数替换为 Object,并将其编译为本机代码。在以后的任何针对引用类型而不是一般类型参数的请求中,都将使用该代码。请注意,采用这种方式,JIT 编译器只会重新使用实际代码。实例仍然按照它们离开托管堆的大小分配空间,并且没有强制类型转换。
default() 运算符,它返回类型的默认值 default(T)
引用类型的默认值为 null,而值类型(例如,整型、枚举和结构)的默认值为全零(用零填充相应的结构)
.dat是什么样的文件
dat文件是程序使用的数据,它只是开发者为了清楚文件的意思而自己定义的,也可以命名成别的扩展名!
你可以用任何编辑工具新建文件,将其命名为.dat。
所以,.dat文件的打开工具也不一样,比如,有些其实是文本文件,只是将扩展名改写成.dat,就可以用文本编辑工具打开;最常见的还有VCD影音文件。
一般来说,这些文件不是由用户直接使用的。
DAT并不是一种标准文件。许多软件都使用这个扩展名,但文件含义不同。比如VCD文件为.DAT,而许多数据分析软件也用这个扩展名保存数据。所以这要看具体的软件情况来定。
构造函数中this调用自身的函数,base调用了父类(基类)的构造函数有关的例子可以看http://www.programfan.com/blog/article.asp?id=30049
is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常