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