using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace OOP { pub ...
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 }