示例#1
0
        // contravariance will delegates
        public static void Main(string[] args)
        {
            ContravarianceDel del = DoSomething;

            del(null);

            Console.ReadKey();
        }
示例#2
0
        static void Main(string[] args)
        {
            StreamWriter tw = new StreamWriter("dummy");
            //Because both StreamWriter and StringWriter inherit from TextWriter
            //This becomes a valid result
            ContravarianceDel del = DoSomething;

            del(tw);

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            MaineCoon mc  = new MaineCoon("Чейз");
            Cat       cat = mc;

            ContravarianceDel del = CatInfo;

            del((MaineCoon)cat); // Как по мне, так полная хрень!

            mc.GetInfo();

            Console.ReadKey();
        }
示例#4
0
        public void DoTest()
        {
            // both return class inherits from TextWriter
            // 共変性(covariance)
            del = MethodStream;
            del = MethodString;

            // parameter StreamWriter also inherits TextWriter
            // 反返性(contravariance)
            contraDel = DoSomething;

            Func <int, int, int> calc = (x, y) => x + y;

            Console.WriteLine($"Func<int, int, int> calc = {calc(1, 2)}");
        }
        static void Main(string[] args)
        {
            Console.WriteLine("=========Contra-Covariance:Action============");

            Action <object> actObject = SetObject;
            // Um objeto que é instanciado com um argumento de tipo menos derivado
            // é atribuído a um objeto instanciado com um argumento de tipo mais derivado.
            // A compatibilidade da atribuição é revertida.
            Action <string> actString = actObject;

            Console.WriteLine("actObject=" + actObject.GetType()); // actObject = System.Action`1[System.Object]
            Console.WriteLine("actString=" + actString.GetType()); // actString = System.Action`1[System.Object]

            ContravarianceDel del = DoSomething;

            Console.ReadKey();
        }
示例#6
0
 static void Main(string[] args)
 {
     ContravarianceDel del = DoSomething;
 }
示例#7
0
 public static void ContravarianceWithDelegates()
 {
     ContravarianceDel del = DoSomething;
 }
示例#8
0
 public static void ContravarianceDemo()
 {
     ContravarianceDel del = DoSomething;
     //possible because ContravarianceDel takes a StreamWriter, and TextWriter inherits from StreamWriter
 }
示例#9
0
 public void useContravariance()
 {
     ContravarianceDel del2 = DoSomething;
 }
示例#10
0
 public void teste()
 {
     ContravarianceDel  del  = DoSomething;
     ContravarianceDel2 del2 = DoSomething;
 }
示例#11
0
 public static void Run()
 {
     ContravarianceDel del = DoSomething;
 }
示例#12
0
 public void Main()
 {
     ContravarianceDel del = this.DoSomething;
 }
示例#13
0
 static void Main(string[] args)
 {
     //Because DoSomething can work with a text writer it can also work with a stream writer.
     //This is contravariance.
     ContravarianceDel del = DoSomething;
 }
示例#14
0
        public void Ex4_Contravariance()
        {
            ContravarianceDel del = MethodContra;

            del(new Derived()); // requires delegate type
        }
示例#15
0
 public static void Test_Contravariance()
 {
     del = DoSomething;
     del(null);
     Console.ReadLine();
 }