static關鍵字---"工具類"

花是花树是树發表於2024-03-17
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

}

相關文章