ToB企服应用市场:ToB评测及商务社交产业平台
标题:
C# 接口的使用案例
[打印本页]
作者:
花瓣小跑
时间:
2024-6-19 21:10
标题:
C# 接口的使用案例
1. IEnumerable接口同时满意数组和列表
利用
IEnumerable
这个接口来实现一个方法可以同时满意数组和列表传入。
接口就是供需双方的约定/左券,需求方是用户需要计算一组数据的总和/平均数
提供方负责提供这样的算法,但是要求用户输入一个可以被
迭代
的聚集,聚集内里的元素为double类型。 数组和列表有一个雷同的接口
IEnumerable
,所以可以通过这个接口将数组和列表同一起来。
当然这样做的条件是求和/求平均数操作这两个方法只需要使用迭代功能来遍历数据集内里的数据,而放弃了数组或列表其特有的属性和方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
double[] Array1 = new double[5] { 1, 2, 3, 4, 5 };
List<double> list = new List<double> { 6, 7, 8, 9, 10 };
Calculate cal = new Calculate();
double res1 = cal.Sum(Array1);
double res2 = cal.Avg(list);
Console.WriteLine(res1);
Console.WriteLine(res2);
}
}
class Calculate
{
public double Sum(IEnumerable<double> nums)
{
double result = 0.0d;
foreach (var item in nums)
{
result += item;
}
return result;
}
public double Avg(IEnumerable<double> nums)
{
double sum = 0.0d;
int count = 0;
foreach (var item in nums)
{
sum += item;
count++;
}
return sum / count;
}
}
}
复制代码
2. OPPO和VIVO使用雷同接口
手机类(抽象类 功能包罗打电话、接电话、发短信、收短信。)
抽象类是包罗了未完全实现的方法,而接口所包罗的全部方法都应该是未实现的。(抽象类——未完全实现,接口——完全未实现)
以上四种功能在手机这个类内里应该全部作为纯虚方法存在,然后到详细品牌的手机类中去实现。
也就是说手机类中的全部方法全部都是未实现的方法,这样手机抽象类其实就是接口了。
需要注意的是,接口中的方法是没有修饰符的,默以为public,而且也没有方法体。
普通类实现接口方法时,必须实现接口里的全部方法,而且要加上public修饰符。
当然了,如果你将现在的这个类作为抽象类,那它就可以先实现接口中的一部门方法,剩下的未被实现的方法留着给这个抽象类的子类去实现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
//我买了一个oppo手机
PhoneUser user = new PhoneUser(new OPPO());
user.usePhone();
//我又买了一个vivo手机
user = new PhoneUser(new VIVO());
user.usePhone();
}
}
interface IPhone
{
void Ring();
void Answer();
void Send();
void Receive();
}
class OPPO:IPhone
{
public void Ring()
{
Console.WriteLine("Hello!");
}
public void Answer()
{
Console.WriteLine("This is Jay!");
}
public void Send()
{
Console.WriteLine("Good Morning!");
}
public void Receive()
{
Console.WriteLine("Good Evening!");
}
}
class VIVO : IPhone
{
public void Ring()
{
Console.WriteLine("Hello!");
}
public void Answer()
{
Console.WriteLine("This is Jay!");
}
public void Send()
{
Console.WriteLine("Good Morning!");
}
public void Receive()
{
Console.WriteLine("Good Evening!");
}
}
//用户类
class PhoneUser
{
private IPhone _iphone;
public PhoneUser(IPhone iphone)
{
_iphone = iphone;
}
public void usePhone()
{
_iphone.Ring();
_iphone.Answer();
_iphone.Send();
_iphone.Receive();
}
}
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4