C#学习笔记-刘铁锰C#入门 视频P29 接口即契约(contract) 例子一(不同类型数组求和求平均)

刘铁锰C#入门 视频P29 接口即契约(contract) 例子一

 

刘铁锰C#入门 视频P29 语雀P28

 

语雀P28 中 第一个例子 说明补充

//这个例子是要实现对一组整数 进行 求值 和求平均值 操作

//但是 这组整数 可能放在一个“int”整形数组里,
//但是也有可能是放在 一个 “ArrayList ”实例里面,且这个“ArrayList”是非泛型的


//**//** 现在我对“int”和“ArrayList”里面的数组 求和 与 求平均值时
//**//** 且在 不使用 “接口”的 情况下 我需要 写 四个方法--
//--《(一个求平均值 一个求和)两个int + 两个ArrayList》 共四个

//强类型语言 所以 用来操作 整形数组的“int”不能用来操作“ArrayList”的  因此共四个

 

 

 

using System;
using System.Collections;

namespace ConsoleApp21
{
class Program
{

static void Main(string[] args)
{
int[] nums1 = new int[] { 1, 2, 3, 4, 5 };

ArrayList nums2 = new ArrayList { 1, 2, 3, 4, 5 };

Console.WriteLine(Sum(nums1)); //求值
Console.WriteLine(Avg(nums1)); //求平均值

Console.WriteLine(Sum(nums2));//求值
Console.WriteLine(Avg(nums2));//求平均值

}
static int Sum(int[] nums)
{
int sum = 0;
foreach (var n in nums)
{
sum += n;
}
return sum; // 一个“int”求和
}

static double Avg(int[] nums)
{
int sum = 0;
double count = 0;
foreach (var n in nums)
{
sum += n;
count++;
}
return sum / count; // 一个“int”求平均值
}

static int Sum(ArrayList nums)
{
int sum = 0;
foreach (var n in nums)
{
sum += (int )n; //   因为 ArrayList里面存储的类型 是object 类型的  所以讲“object”强转为(int) 
     
} return sum; // 一个“ArrayList”求和 } static double Avg(ArrayList nums) { int sum = 0; double count = 0; foreach (var n in nums) { sum += (int)n; count++; } return sum / count; // 一个“ArrayList”求平均值 //总的 四个方法 } } }

接着  下一步是  因为 int 整形数组的基类是 array  且 在代码中 对“array”按下F12键 跑到里面去 发现 它还实现了“IEnumerable”接口 

  恰好 “ArrayList ”按下F12进去 以后 也发现了他实现了“IEnumerable”接口    且 接口也相当于契约 等于是 我接受这个契约 保证自己可以被迭代

  因此可以将 程序中的 

static int Sum(IEnumerable nums) //“IEnumerable”替换“ArrayList   或者将 “int”替换成 “ArrayList” ”
{
int sum = 0;
foreach (var n in nums)
{
sum += (int )n; //   因为 ArrayList里面存储的类型 是object 类型的  所以讲“object”强转为(int) 
     
}
return sum; // 一个“ArrayList”求和
}

static double Avg(IEnumerable nums) //“IEnumerable”替换“ArrayList  或者 将“int”替换成“ArrayList” 
{
int sum = 0;
double count = 0;
foreach (var n in nums)
{
sum += (int)n;
count++;
}
return sum / count; // 一个“ArrayList”求平均值

//总的 由四个方法减少成了两个方法!!
}

 

 

posted @ 2020-09-19 15:10  庚子年小菜鸟  阅读(199)  评论(0)    收藏  举报