标签:style blog color 使用 for ar div amp
class Program { static void Main(string[] args) { StreamFactory factory = GenerateSampleData;//(3) using (Stream stream = factory())//(4) { int data; while ((data=stream.ReadByte())!=-1) { Console.WriteLine(data); } } Console.Read(); } private delegate Stream StreamFactory();//(1) static MemoryStream GenerateSampleData()//(2) { byte[] buffer = new byte[16]; for (int i = 0; i < buffer.Length; i++) { buffer[i] = (byte)i; } return new MemoryStream(buffer); } }
我们声明委托类型的返回类型是Stream(1),但GenerateSampleData方法(2)的返回类型是MemoryStream。负责创建委托实例的那一行(3)执行前面见过的转变换,并利用返回类型的协变性来允许GenerateSampleData座位StreamFactory的操作使用。到调用委托实例的时候(4),编译器已经不知道返回的是一个MemoryStream——如果将stream变量的类型变成MemoryStream,会报告一个编译错误。
摘抄自《深入理解C#》第五章,5.3.2 委托返回类型的协变性
标签:style blog color 使用 for ar div amp
原文地址:http://www.cnblogs.com/uncleJOKER/p/3918714.html