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