特性
|
|
动态类型
|
|
在C++中这是最最基本的函数模板,但是在C#中代码通不过,
因为泛型不是模板,它不会生成多份代码,T是当做object来处理的,
因此不能用来进行加法运算。
##所以c#又引入了动态类型的概念##
便可以如下:
C#编译器允许你通过dynamic对象调用任何方法,即使这个方法根本不存在,
编译器也不会在编译的时候报编译错误。只有在运行的时候,
它才会检查这个对象的实际类型
再看一段代码:
LINQ(Language Integrated Query)
它使得查询语句可以像数据库那样执行
太多了,先跳过吧!
释放非托管的资源
c#的析构函数使用较少,释放的时机和位置由于不确定。
官方建议用IDisposable
接口来代替析构函数(用于准确释放资源):
再说明下:
托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象;
非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象、gdi对象等;
|
|
重写Dispose接口为了及时释放非托管资源。
编写析构函数为了确保CLR的自动释放。