c#之接口,依赖反转,单元测试
1.接口
弱类型语言允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。C and C++ 是静态语言,也是弱类型语言;Perl and PHP 是动态语言,但也是弱类型语言。
强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。Java、C# 和 Python 等都是强类型语言。
下面代码简单介绍了使用接口的例子,因为c#是强类型语言,所以如果Sum()方法的参数不是IEnumerable的话,就只能是int[]或者ArryList,这种情况下,如果想num与arrayList对象都用sum和avg方法的话就得每个都写一遍,但是因为数组和ArrayList都继承了IEnumerable,所以可以直接用它做参数接收。
class Program
{
static void Main(string[] args)
{
int[] num = new int[] { 1, 2, 3, 4, 5 };
ArrayList arrayList = new ArrayList { 1, 2, 3, 4, 5 };
Console.WriteLine(Sum(num));
Console.WriteLine(Avg(num));
Console.WriteLine(Sum(arrayList));
Console.WriteLine(Avg(arrayList));
Console.ReadKey();
}
static int Sum(IEnumerable num)
{
int sum = 0;
foreach(var n in num)
{
sum += (int)n;
}
return sum;
}
static double Avg(IEnumerable num)
{
int sum = 0;
double count = 0;
foreach (var n in num)
{
sum += (int)n;
count++;
}
return sum/ count;
}
}结果:
15 3 15 3