static关键字---"工具类"
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace OOP { public class OOPdemo { /* * static关键字 * 作用:可以修饰成员变量,修饰成员方法 * 需求:同一个类生成的对象们,共享此方法,一处修改,处处感知 * 规则: * 1.类名.变量名; * 2.类名.方法名() * 3.随着类的加载而加载,优先于对象生成 * 4.静态方法内部,只能够访问静态成员变量,并不能够访问普通成员变量 * 5.普通方法方法内部,可以访问静态成员变量+普通成员变量 * --静态类 * 规则 * 1.只允许加入静态成员/属性 * 2.只允许加入静态成员方法 * 3.*实例化--->不允许使用 new 进行实例化生成。实例 * --sattic的内存原理 * -生命周期由类的产生而产生 * -也就是说,当第一次遇到需要调用的类时,static变量就会被加载到 静态内存当中 作为一个共享的 */ #region statuic的字段/属性 /// <summary> /// 用于己录当前一共生成过多少个对象 /// 因为static关键字,所以这个字段被共享出了 /// </summary> static public int count; private int ID; public int id { get => ID; set => ID = value; } /// <summary> /// 构造方法,对象被创建的时候被调用 /// </summary> public OOPdemo() { count++; } #endregion } #region 静态类的---工具类 /// <summary> /// 静态类的---工具类 /// 特点 /// --在当前类中,没有存储字段 /// --不需要也不允许new对象实例化 /// --内部的方法都为静态方法 /// --所作的计算都依赖于外界传入的参数,完成外界想让静态方法完成的任务 /// 在调用静态类中的某个方法时,只需要类名.方法名 不需要实例化,因为他没有字段存储数据 /// 且运行时依赖于外部传进来的参数,则作为静态方法使用 /// 设置为静态类,可以防止他人new 本类的对象,从而规范开发行为 /// </summary> static class staticss { //给定一个数组,要求返回这个数组中的最大值和最小值,以及和以及平均数 /// <summary> /// 返回数组中最大值 /// </summary> /// <param name="arr"></param> /// <returns></returns> public static int Max(int [] arr) { int a = 0; for (int i = 0; i < arr.Length; i++) { if (a>arr[i]) { a = arr[i]; } } return a; } /// <summary> /// 返回数组中最新小的值 /// </summary> /// <param name="arr"></param> /// <returns></returns> public static int Min(int[] arr) { int a = 0; for (int i = 0; i < arr.Length; i++) { if (a < arr[i]) { a = arr[i]; } } return a; } /// <summary> /// 返回数组中所有元素的和 /// </summary> /// <param name="arr"></param> /// <returns></returns> public static int Sum(int[] arr) { int a = 0; foreach (var item in arr) { a += item; } return a; } /// <summary> /// 返回数组中所有元素1平均值 /// </summary> /// <param name="arr"></param> /// <returns></returns> public static int Avg(int[] arr) { int a = 0; foreach (var item in arr) { a += item; } return a/arr.Length; } } #endregion }