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