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


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

我就寫了個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" };
        }

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM