a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

使用C#中的泛型提高代碼復用率

2023-05-05 19:01:39
字體:
來源:轉載
供稿:網友

關于泛型,在本站中已經有幾篇文章作了相關介紹,本文從代碼重用提高效率的角度再次探討了泛型的使用心得。具體思路是通過泛型將兩個相似的方法合并到一起,具體實現原理與過程如下:

  有兩個類:

  public class Dog

  {

  public string Name { get; set; }

  }

  public class Cat

  {

  public string Name { get; set; }

  }

  現在有一個需求,要求將Dog和Cat的名字打印出來,寫兩個方法,分別用于打印Dog和Cat的名字:

  //打印Dog的名字

  public static void PrintDogName(Dog dog)

  {

  Console.WriteLine(dog.Name);

  }

  //答應Cat的名字

  public static void PrintCatName(Cat cat)

  {

  Console.WriteLine(cat.Name);

  }

  需要完成打印名字的工作時,實例化Dog和Cat,再分別調用兩個方法來打印名字:

  static void Main(string[] args)

  {

  //實例化Dog

  Dog Spot = new Dog() { Name = "WangWang" };

  //實例化Cat

  Cat Persian = new Cat() { Name = "Mimi" };

  //打印Dog實例的Name

  PrintDogName(Spot);

  //打印Cat實例的Name

  PrintCatName(Persian);

  }

  在做codereview的時候,發現這兩個方法是如此的相似,只有處理的類型不一樣。在這個示例中可以這樣合并:

  //本示例的合并方法

  public static void PrintName(string name)

  {

  Console.WriteLine(name);

  }

  下面用泛型方法來將這兩個方法合并成一個方法,來提高代碼復用:

  public static void PrintName<T>(T t)

  {

  //打印的是Dog

  if (t is Dog)

  {

  Console.WriteLine((t as Dog).Name);

  return;

  }

  //打印的是Cat

  if (t is Cat)

  {

  Console.WriteLine((t as Cat).Name);

  return;

  }

  //打印的既不是Dog也不是Cat

  Console.WriteLine("This method only support Dog and Cat.");

  }

  這種方法是把方法合并成一個了,但總的代碼量沒有減少。只是把原來兩個方法里的代碼拿到一個方法里來了,后來又想了一種合并的方法,步驟如下:

  首先將Dog類和Cat類抽象出一個接口來:

  //包含名字屬性的接口

  interface IName

  {

  string Name { get; set; }

  }

  Dog和Cat類都要繼承這個接口:

  //Dog類繼承了IName接口

  public class Dog : IName

  {

  public string Name { get; set; }

  }

  //Cat類繼承了IName接口

  public class Cat:IName

  {

  public string Name { get; set; }

  }

  現在重寫這個泛型方法:

  //限制泛型必須實現IName接口

  public static void PrintName<T>(T t)where T:IName

  {

  Console.WriteLine(t.Name);

  }

  這樣方法體內的代碼就不用重復了,而且將來要打印任何繼承IName接口的名字了,代碼可擴展。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美中文一区 | 131美女免费做媛视频 | 黄页网站免费在线观看 | 国产a区 | 国产精品视频免费 | 精品国产一区二区三区久久久蜜月 | 成人精品一区二区三区电影黑人 | 久久99精品久久久久久久久久久久 | 美女毛片 | 亚洲精品成人 | 黄色免费高清视频 | 四虎影视最新网址 | 亚洲视频免费观看 | 国产成人精品一区二 | 欧洲亚洲精品久久久久 | 国产精品久久国产精品 | 国产一级电影网 | 国产精品一区二区三区不卡 | 国产一区二区三区视频在线观看 | 色婷婷综合在线 | 色呦呦免费观看 | 91精品久久久久久久久中文字幕 | www.欧美日韩| 天天天天天天天操 | 久久久一| 青青久在线视频免费观看 | 美女二区| 国产精品久久久久久久久久久久久 | 久久人人爽爽人人爽人人片av | 日本天堂在线 | 国产亚洲精品久久 | 欧美精品久久久久久久久久丰满 | 久精品视频 | 国产成人精品久久二区二区91 | 国产成人在线免费观看视频 | 99精品欧美一区二区三区综合在线 | 国产精品精品视频一区二区三区 | 国产午夜久久久久 | 日韩精品久久久免费观看夜色 | 精品国模一区二区三区欧美 | 日韩一区二区三区四区五区六区 |