對C# 中Readonly的再認識


對C# 中Readonly的再認識

 

  很多人知道readonly 和 const 以及他們的區別和聯系,本文只要對readonly 的一個小特性進行記錄,屬於讀書筆記吧

請看如下代碼

    public sealed class AType
    {
        public static readonly Char[] TestChars = new Char[] {'A', 'B', 'C'};
    }

  這句代碼很簡單 我只是對靜態只讀字段TestChars賦初始值。這時候如果我問你我現在可以改變TestChars的值嗎,你肯定會回答當然不可以,真的是這樣嗎,請仔細思考下.

請看如下代碼

    class Program
    {
        static void Main(string[] args)
        {
            AType.TestChars[0] = 'X';
            AType.TestChars[1] = 'Y';
            AType.TestChars[2] = 'Z';
            Console.WriteLine(AType.TestChars[0]);
            Console.Read();
        }
    }

  這個輸出結果是什么呢,是編譯的時候報錯還是會輸出修改后的值“X”呢 答案是輸出為“X”

  在看如下代碼

    class Program
    {
        static void Main(string[] args)
        {
            AType.TestChars = new Char[] {'X', 'Y', 'Z'};
            Console.WriteLine(AType.TestChars[0]);
            Console.Read();
        }
    }

  這個輸出結果又是什么呢。。。 答案是編譯出錯提示“無法對靜態只讀字段賦值”

  看到這里,我想大家都明白了:當某個字段是引用類型,並且該字段標記為readonly時,那么不可改變的是引用,而非字段引用的對象.


 

 

 

 

 


免責聲明!

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



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