协变与逆变

父类 = 子类 协变 in don't safty
子类 = 父类 逆变 out

委托
public delegate T MyFuncB<out T>(); 协变

public delegate void MYActionB<in T>(T param); 逆变

public delegate T MyFuncB<out T>(); //支持协变
MyFuncB<object> funcBObject = null;
MyFuncB<string> funcBString = null;
funcBObject = funcBString; //协变

public delegate void MyActionB<in T>(T param); //支持逆变
MyActionB<object> actionBObject = null;
MyActionB<string> actionBString = null;
actionBString = actionBObject; //逆变

接口
public interface IFlyB<out T> { } //支持协变
public interface IPlayB<in T> { } //支持逆变

string Base<string>.Test(string param)
object Base<object>.Test(object param)

posted @ 2013-04-02 22:32  龙之云  阅读(230)  评论(0编辑  收藏  举报