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#代码示例介绍了协变的概念及应用。该示例演示了如何使用协变将返回具体类型的MemoryStream的方法转换为返回更通用类型的Stream的方法,并展示了如何调用该方法并遍历其返回的数据。
480

被折叠的 条评论
为什么被折叠?



