clr via C#笔记(3)
2014-01-19 10:15
148 查看
字符、字符串和文本处理
在.net framework中,字符总是表示成16位Unicode代码值。
从Encoding派生的类型可用于进行无状态的(中途不保持状态的)编码和解吗。需要从一个流中读取字节时,应该调用Encoding的GetDecoder或GetEncoder方法得到相应对象,然后进行操作。从Encoding派生的类不对方法调用之间的状态进行维护,如果以数据块的形式来编解码,可能会丢失数据
数组
所有数组都隐士实现IEnumberable,Icollection和Ilist。
因为涉及多维数组和非0基数组的问题,CLR团队不希望System.Array实现IEnumberable<T>,ICollection<T>和IList<T>。创建一个一维0基数组类型时,CLR会自动使数组类型实现IEnumberable<T>,ICollection<T>和IList<T>,同时还会为数组类型的所有基类型实现这三个接口,只要他们是引用类型。由于所有这些接口都有CLR自动实现,所以可以将一个FileStream类型数组传给一下任何一种原型的方法
在.net framework中,字符总是表示成16位Unicode代码值。
从Encoding派生的类型可用于进行无状态的(中途不保持状态的)编码和解吗。需要从一个流中读取字节时,应该调用Encoding的GetDecoder或GetEncoder方法得到相应对象,然后进行操作。从Encoding派生的类不对方法调用之间的状态进行维护,如果以数据块的形式来编解码,可能会丢失数据
数组
所有数组都隐士实现IEnumberable,Icollection和Ilist。
因为涉及多维数组和非0基数组的问题,CLR团队不希望System.Array实现IEnumberable<T>,ICollection<T>和IList<T>。创建一个一维0基数组类型时,CLR会自动使数组类型实现IEnumberable<T>,ICollection<T>和IList<T>,同时还会为数组类型的所有基类型实现这三个接口,只要他们是引用类型。由于所有这些接口都有CLR自动实现,所以可以将一个FileStream类型数组传给一下任何一种原型的方法
void M1(IList<FileStream> fsList){} void M2(ICollection<Stream> sCollection){} void M3(IEnumerable<Object> oEnumerable){}
相关文章推荐
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_dynamic基元类型
- CLR Via C# 学习笔记(3) 常量和字段(const readonly)
- CLR via C# 学习笔记----Nullable Value Types可以指定为Null的值类型
- <NET CLR via c# 第4版>笔记 第15章 枚举类型和位标志
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_类型的各种成员
- 《CLR Via C# 第3版》笔记之(八) - 类型的转换构造器和方法
- 《CLR Via C# 第3版》笔记之(九) - 扩展方法和分部方法
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_.Net Framework 部署目标
- CLR Via C# 学习笔记(6) 方法参数相关(out ref params)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_友元程序集
- 『框架设计(第2版)CLR Via C#』学习笔记(001)——将源代码编译成托管模块
- 《CLR Via C# 第3版》笔记之(十三) - 泛型基础
- 【个人笔记】CLR Via C# 第一章 CLR执行模型
- <NET CLR via c# 第4版>笔记 第11章 事件
- 《CLR via C#》中事件一章的笔记
- CLR via C# 读书笔记1-4 追记
- 《CLR Via C# 第3版》笔记之(五) - C#中的伪Union类型
- 【CLR Via C#笔记】操作符重载