您的位置:首页 > 编程语言 > C#

c# 委托 协变和逆变

2010-02-21 16:28 267 查看
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class x { public int val;}
class y : x { }
delegate x ChangeIt (y obj);
class CoContraVariance {
public  static x incrA(x obj)
{
x tem = new x();
tem.val = obj.val + 10;
return tem;
}

public  static y incrB(y obj)
{
y temp = new y();
temp.val = obj.val + 1;
return temp;
}
}

class Program
{
static void Main(string[] args)
{
y yob = new y();
ChangeIt change = CoContraVariance.incrA;
x xob = change(yob);
Console.WriteLine("Xob:" + xob.val);

change = CoContraVariance.incrB;
yob = (y)change(yob);
Console.WriteLine("yob:" + yob.val);
yob = (y)change(yob);
Console.WriteLine("yob:" + yob.val);
Console.Read();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: