c#协变 抗变

public class Fa : TranOut<Fa>, TranIn<Fa>
    {
    }
    public class son : Fa, TranOut<son>, TranIn<son>
    {

    }
    public interface TranOut<out t>
    {

    }
    public interface TranIn<in t>
    {

    }
    public class Test
    {
        public void test()
        {
            //c#4.0
            IEnumerable<Fa> sharps = new List<son>();
            Fa a = new son();
            TranOut<Fa> b = new son();
            TranIn<son> c = new Fa();

            IEnumerable<Fa> la = new List<son>();
            
        }
    }

用out作为协变关键字,in为抗变关键字

使用out可以将子类转成父类对象,in则反之

 

posted @ 2019-04-30 16:52  Hey,Coder!  阅读(173)  评论(0编辑  收藏  举报