深入理解 c# 第五章 演示委托类的返回类型的协变性
2018-04-08 11:22
609 查看
class Covariance { delegate Stream StreamFactory(); //声明返回Stream的委托类型 static MemoryStream GenerateSampleData() //声明返回MemoryStream的方法 { byte[] buffer = new byte[16]; //buffer数组 16个byte变量 for (int i = 0; i < buffer.Length; i++) { buffer[i] = (byte)i; } return new MemoryStream(buffer); } static void Main() { StreamFactory factory = GenerateSampleData; //利用协变性转换方法组 MemoryStream的转换成了 Stream类型,也可以用
//GenerateSampleData() 方法 using (Stream stream = factory()) //调用委托获得stream 执行GenerateSampleData()方法 stream是有16个byte字节的数组 { int data; while ((data = stream.ReadByte()) != -1) //data就是数组里面的一个数,0-15 都没有不等于-1 都输出 { Console.WriteLine(data); } } } }
输出
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
相关文章推荐
- 深入理解 c# 第五章 演示方法组转换和委托逆变性
- 深入理解 c# 第五章 匿名方法用于Action<T>委托类型 反转字符 求平方根 求平均数
- 深入理解 c# 第五章 使用多个委托来捕获多个变量实例
- 深入理解 c# 第五章 从匿名方法返回一个值 求余数
- C#深入学习:泛型修饰符in,out、逆变委托类型和协变委托类型
- c# 返回类型比委托的可访问性低
- ch01.深入理解C#委托及原理_《没有控件的ASPDONET》
- C# OOP之五 深入理解值类型和引用类型
- C#值类型和引用类型的深入理解
- 深入理解 c# 第四章 c#2为可空类型提供的语法糖
- [C#基础知识系列]专题十七:深入理解动态类型
- C# 深入理解值类型和引用类型
- [C#基础知识系列]专题:深入理解动态类型
- C#值类型和引用类型的深入理解
- 深入理解C#委托及原理
- 【转】[C# 基础知识系列]专题九 :深入理解泛型可变性
- [C# 基础知识系列]专题九: 深入理解泛型可变性
- C#值类型和引用类型的深入理解
- 深入理解 c# 第二章 数组协变以及执行时类型检查
- 深入理解 c# 第五章 不同种类的变量和匿名方法的关系