C# 接口的使用案例

打印 上一主题 下一主题

主题 779|帖子 779|积分 2337

1. IEnumerable接口同时满意数组和列表



  • 利用 IEnumerable 这个接口来实现一个方法可以同时满意数组和列表传入。
  • 接口就是供需双方的约定/左券,需求方是用户需要计算一组数据的总和/平均数
  • 提供方负责提供这样的算法,但是要求用户输入一个可以被迭代的聚集,聚集内里的元素为double类型。 数组和列表有一个雷同的接口
    IEnumerable ,所以可以通过这个接口将数组和列表同一起来。
  • 当然这样做的条件是求和/求平均数操作这两个方法只需要使用迭代功能来遍历数据集内里的数据,而放弃了数组或列表其特有的属性和方法。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication2
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             double[] Array1 = new double[5] { 1, 2, 3, 4, 5 };
  13.             List<double> list = new List<double> { 6, 7, 8, 9, 10 };
  14.             Calculate cal = new Calculate();
  15.             double res1 = cal.Sum(Array1);
  16.             double res2 = cal.Avg(list);
  17.             Console.WriteLine(res1);
  18.             Console.WriteLine(res2);
  19.         }
  20.     }
  21.     class Calculate
  22.     {
  23.         public double Sum(IEnumerable<double> nums)
  24.         {
  25.             double result = 0.0d;
  26.             foreach (var item in nums)
  27.             {
  28.                 result += item;
  29.             }
  30.             return result;
  31.         }
  32.         public double Avg(IEnumerable<double> nums)
  33.         {
  34.             double sum = 0.0d;
  35.             int count = 0;
  36.             foreach (var item in nums)
  37.             {
  38.                 sum += item;
  39.                 count++;
  40.             }
  41.             return sum / count;
  42.         }
  43.     }
  44. }
复制代码
2. OPPO和VIVO使用雷同接口



  • 手机类(抽象类 功能包罗打电话、接电话、发短信、收短信。)
  • 抽象类是包罗了未完全实现的方法,而接口所包罗的全部方法都应该是未实现的。(抽象类——未完全实现,接口——完全未实现)
  • 以上四种功能在手机这个类内里应该全部作为纯虚方法存在,然后到详细品牌的手机类中去实现。
  • 也就是说手机类中的全部方法全部都是未实现的方法,这样手机抽象类其实就是接口了。
  • 需要注意的是,接口中的方法是没有修饰符的,默以为public,而且也没有方法体。
  • 普通类实现接口方法时,必须实现接口里的全部方法,而且要加上public修饰符。
  • 当然了,如果你将现在的这个类作为抽象类,那它就可以先实现接口中的一部门方法,剩下的未被实现的方法留着给这个抽象类的子类去实现。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication2
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //我买了一个oppo手机
  13.             PhoneUser user = new PhoneUser(new OPPO());
  14.             user.usePhone();
  15.             //我又买了一个vivo手机
  16.             user = new PhoneUser(new VIVO());
  17.             user.usePhone();
  18.         }
  19.     }
  20.     interface IPhone
  21.     {
  22.         void Ring();
  23.         void Answer();
  24.         void Send();
  25.         void Receive();
  26.     }
  27.     class OPPO:IPhone
  28.     {
  29.         public void Ring()
  30.         {
  31.             Console.WriteLine("Hello!");
  32.         }
  33.         public void Answer()
  34.         {
  35.             Console.WriteLine("This is Jay!");
  36.         }
  37.         public void Send()
  38.         {
  39.             Console.WriteLine("Good Morning!");
  40.         }
  41.         public void Receive()
  42.         {
  43.             Console.WriteLine("Good Evening!");
  44.         }
  45.     }
  46.     class VIVO : IPhone
  47.     {
  48.         public void Ring()
  49.         {
  50.             Console.WriteLine("Hello!");
  51.         }
  52.         public void Answer()
  53.         {
  54.             Console.WriteLine("This is Jay!");
  55.         }
  56.         public void Send()
  57.         {
  58.             Console.WriteLine("Good Morning!");
  59.         }
  60.         public void Receive()
  61.         {
  62.             Console.WriteLine("Good Evening!");
  63.         }
  64.     }
  65.     //用户类
  66.     class PhoneUser
  67.     {
  68.         private IPhone _iphone;
  69.         public PhoneUser(IPhone iphone)
  70.         {
  71.             _iphone = iphone;
  72.         }
  73.         public void usePhone()
  74.         {
  75.             _iphone.Ring();
  76.             _iphone.Answer();
  77.             _iphone.Send();
  78.             _iphone.Receive();
  79.         }
  80.     }
  81. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表