麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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接口的名字了,代碼可擴展。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av手机在线免费播放 | 日本视频在线播放 | 日本在线观看一区二区 | 99最新网址 | 午夜精品福利影院 | 欧美毛片 | 97久色| 自拍偷拍亚洲图片 | 激情宗合 | 国产午夜精品一区二区三区免费 | 中文字幕欧美一区二区三区 | caoporn国产一区二区 | 久久蜜臀一区二区三区av | 亚洲va国产va | 午夜精品久久久久久中宇 | 亚洲成人激情在线 | 国产99免费| 久久黄色影院 | 欧美日韩一区,二区,三区,久久精品 | 国产精品久久久久久影院8一贰佰 | 草草视频免费观看 | 久久99精品视频在线观看 | 黄色高清免费网站 | 国产精品一区二区在线 | 天堂成人国产精品一区 | 欧美18videos性处按摩 | www.91sese| 久久精品国产99久久久古代 | 在线区| 欧美精品免费一区二区三区 | 99最新网址 | 在线影院av | 538任你躁在线精品视频网站 | 亚洲成人在线视频网站 | 91麻豆精品国产91久久久无需广告 | 久久久免费观看完整版 | 久久精品亚洲一区二区三区观看模式 | 日本高清在线免费 | 欧美成人精品欧美一级 | 亚洲精品久久久久久久久久久 | 久久久久久久久久久久免费 |