C# static readonly 修飾符初始化變量

同事問了一個問題,readonly和static啥區別?api

我就寫了個demo運行了下:多線程

        /***
         * 驗證初始化次數:static只初始化一次,不管多少用戶訪問,在內存中只有一份
         *              readonly每一個線程初始化一次
         *              若是是接口中使用service方法,最好使用static 或者static readonly修飾符
         * 驗證修飾符初始化順序:static readonly-->static-->無修飾符-->readonly
         * */
        public object obj = new object();  //③
        public readonly object readonlyObj = new object();   //④
        public static readonly object staictReadonlyObj = new object(); //①
        public static object staictObj = new object();  //②


        // GET api/values
        public IEnumerable<string> Get()
        {
            var o = obj.GetType();
            var o0 = readonlyObj.GetType();
            var o1 = staictReadonlyObj.GetType();
            var o2 = staictObj.GetType();

            return new string[] { "value1", "value2" };
        }

驗證了在多線程的狀況下屬性初始化次數,以及初始化的順序。spa

相關文章
相關標籤/搜索