C#基礎-051 靜態類

namespace 靜態類
{
    //靜態類就是用static 修飾的類
    //靜態方法就是用static修飾的方法
    //靜態類是無法被繼承的
    //實例類中可以包含靜態成員和實例成員
    static class StaticClass
    {
        //靜態類中不能出現實例字段
        //private string name;
        //靜態類中能包含靜態的字段

        private static string name;
        //靜態類中不能出現實例方法
        //public int Add(int num1,int num2)
        //{
        //    return num1 + num2;
        //}

        public static int number;

        public static string Name
        {
            get
            {
                return name;
            }

            set
            {
                name = value;
            }
        }

        //靜態類中不能有實例構造方法
        //public StaticClass()
        //{

        //}

        //靜態類中不能出現訪問修飾符
        //靜態類雖然不能被實例化 但是靜態構造方法也能被調用
        //靜態構造函數無訪問修飾符、無參數,只有一個 static 標誌。
        //靜態構造函數不可被直接調用,當創建類實例或引用任何靜態成員之前,靜態構造函數被自動執行,並且在某次運行期間只執行一次。
        //靜態構造函數最多隻運行一次。
        //靜態構造函數不可以被繼承。  所有的構造函數都不可以被繼承
        static StaticClass()
        {
            Console.WriteLine("***");
        }

        //靜態類中只能包含靜態的方法 
        public static int Add(int num1,int num2)
        {
            return num1 + num2;
        }

        public static void NumberCreate()
        {
            number++;
        }

    }
}
  class StaticClass01
    {

        //屬於實例  調用的時候人爲調用
        public StaticClass01()
        {
            Console.WriteLine("實例構造方法");
        }
        //屬於類  因爲調用時候是被系統調用
        static StaticClass01()
        {
            Console.WriteLine("靜態構造方法");
        }

        public static void Test()
        {
            Console.WriteLine("++++++++++++++");
        }
    }
 class Program
    {
        //如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行。
        //如果類中的靜態字段帶有初始化,則靜態字段的初始化語句將在靜態構造函數之前運行。
        //一個類只能有一個靜態構造函數。
        static int num = 200;
        static Program()
        {
            num = 12000;
        }
        static void Main(string[] args)
        {
            //靜態類不能作爲一種自定義的類型
            //靜態類不能被實例化
            //StaticClass.Add(1,1);
            //Console.WriteLine(num);
            //Test01();
            //Test02();

            //通過類名.方法名調用靜態方法的時候會默認的調用一次靜態構造方法
            StaticClass01.Test();
            //一個類中既含有靜態構造方法 也含有實例構造方法 在創建實例的時候 會首先調用一次靜態構造方法再調用一次實例構造方法    
            StaticClass01 sc = new StaticClass01();

        }

        static void Test01()
        {
            StaticClass.NumberCreate();
            Console.WriteLine(StaticClass.number);

        }
        static void Test02()
        {
            StaticClass.NumberCreate();
            Console.WriteLine(StaticClass.number);
        }
    }
發佈了90 篇原創文章 · 獲贊 18 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章