C#中的協變與抗變

來源:互聯網
上載者:User
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace CSharp基礎
  6. {
  7.     class 委託的協變
  8.     {
  9.         //關於委託方法的傳回型別協變
  10.         //定義委託返回Person執行個體
  11.         public delegate Person ReturnMyObj();
  12.         public static void Main()
  13.         { 
  14.             //註冊委託
  15.             ReturnMyObj mydel = new ReturnMyObj( 委託的協變.PorcessMyFunc ) ;
  16.             Person reobj = mydel();
  17.             if (reobj is Student)
  18.             {
  19.                 Console.WriteLine("返回的是子類執行個體");
  20.             }
  21.             else
  22.             {
  23.                 Console.WriteLine( "返回的不是子類執行個體" );
  24.             }
  25.             Console.ReadLine();
  26.         }
  27.         //按照委託簽名,但返回的是子類的執行個體
  28.         public static Person PorcessMyFunc()
  29.         {
  30.             return new Student();
  31.         }
  32.     }
  33.     class Person
  34.     {
  35.         public string Name;
  36.         public int Age ;
  37.     }
  38.     class Student : Person
  39.     {
  40.         public int StuID;
  41.     }
  42. }
  43. //抗變:向父類的方向變化
  44. //協變:向子類的方向變化

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.