第七天
复习:
垃圾回收, 作用:提高内存利用率;
只有1.引用类型 2.没有任何变量引用的对象;
泛型集合:arraylist object
Hashtable key (object) val(object);
Lest<T> 其实就是一个占位符 ,将来用用对应的类型来代替;
自定义泛型 目的: 还是代码重用; T:一般叫做”类型参数”, 吧数据类型作为参数传递, 一般用T类表示或者以大写T 开头的比如:: tkey ,TValue ,TOutput,
定义的一个泛型类:
可以自定义参数的个数, 可以使用下面的方法:
泛型接口:
知道泛型类的类型的是 封闭类型 ; 不知道类型的是: 开放类型:
泛型方法:可以在不是泛型类的类中定义泛型方法;
泛型约束:
Where t: class //约束t 必须是应用类型:
Where Tc: new() //这个累心必须待带有一个无参数的构造函数;(要求: 1.构造函数不能是私有的, 2.类型不能是抽象的;)
补充(装箱. 拆箱): box . Unbox
1. 装箱: 将值类型转换为 [引用类型] 的过程叫装箱;
2. 拆箱: 将引用类型转换为 [值类型] 的过程叫拆箱:
发生类型准换,但是绝对不叫装箱或拆箱;
由于字符串类型与int类型在内存上根本不存在”交集”,也根本无法发生类型转换, object与int则可以转换, 因为任何类型都是继承自object 类型的;
装箱时,装的是什么的时候还必须使用对应的类型来拆箱;
由于int32是结构, 结构是值类型, 由于int32还实现了IComparable接口, 所以可以在int32与IComparable之间发生类型转换;由于接口是引用类型,
运行计时:
Watch.stop(); //开始
//结束
File //操作文件,静态类,对文件整体操作。拷贝、删除、剪切等。
Directory //操作目录(文件夹),静态类。
DirectoryInfo //文件夹的一个“类”,用来描述一个文件夹对象(获取指定目录下的所有目录时返回一个DirectoryInfo数组。)
FileInfo//文件类,用来描述一个文件对象。获取指定目录下的所有文件时,返回一个FileInfo数组。
Path//对文件或目录的路径进行操作(很方便)【字符串】
Stream//文件流,抽象类。
FileStream//文件流,MemoryStream(内存流),NetworkStream(网络流)
StreamReader //快速读取文本文件
StreamWriter//快速写入文本文件
Foreach
//这里可以使用var 或者object
可以这样定义一个属性, 集合的;
任何类型想要使用foreach来循环遍历, 就必须在当前类型中存在: public IEnumerator
定义一个类:
../返回父目录;
递归 就是方法自己调用自己:
如果递归的时候没有停止条件, 则肯定会死递归.最后报异常,栈溢出;
所以一般递归的时候,都肯定有一个终止条件;
或者说是在某种条件下才会方法自己调用自己(递归);
在程序中使用相对路径不要直接写, 因为有时可能不准确;
文件的乱码, 只有文本文件才会乱码, 文本文件存储时采用的编码,与读取时的编码不一致,
Encoding. Default 表示采用计算机默认的”区域和语言选项”中的编码格式, 我们自己的一般都是简体中文 编码显示为ANSI;
File文件的操作:
File. Delete();删除文件时, 就是没有该文件 ,也是不会报异常;
文件流
1.创建文件流;
2.创建缓冲区
3.开始读取;
4.释放资源;
using (FileStream fs = new FileStream(@"e:\namepass.txt", FileMode.OpenOrCreate))
{}