七問C#關鍵字const和readonly

來源:互聯網
上載者:User

標籤:style   blog   http   color   strong   os   

const和readonly經常被用來修飾類的欄位,兩者有何異同呢?

 

  const

  1、聲明const類型變數一定要賦初值嗎?

--一定要賦初值

public class Student    {        public const int age;    }

產生的時候,會報如下錯:

 

正確的應該這樣寫:

public class Student    {        public const int age = 18;    }

 

  2、聲明const類型變數可以用static修飾嗎?

--不可以

public class Student    {        public static const int age = 18;    }

產生的時候,會報如下錯:

 

正確的應該這樣寫:

public class Student    {        public const int age = 18;    }

因為const預設是static。

 

  3、運行時變數可以賦值給const類型變數嗎?

--不可以

public class Student    {        public const int age = 18;        public Student(int a)        {            age = a + 1;        }    }

產生的時候,會報如下錯:

 

const類型變數是編譯期變數,無法把運行時變數賦值給編譯期變數。

 

  4、const可以修飾參考型別變數嗎?

--可以,但只能給參考型別變數賦null值。

public class Student    {        public const Teacher teacher = new Teacher();    }    public class Teacher    {            }

產生的時候,會報如下錯:


正確的應該這樣寫:

public class Student    {        public const Teacher teacher = null;    }    public class Teacher    {            }

 

  readonly

  5、聲明readonly類型變數一定要賦初值嗎?

--不一定,既可以賦初值,也可以不賦初值。

以下不賦初值的寫法正確:

public class Student    {        public readonly int age;    }

以下賦初值的寫法也對:

public class Student    {        public readonly int age = 18;    }

 

  6、運行時變數可以賦值給readonly類型變數嗎?  

--可以

以下在建構函式中給readonly類型變數賦值是可以的:

public class Student    {        public readonly int age = 18;        public Student(int a)        {            age = a;        }    }

 

  7、聲明readonly類型變數可以用static修飾嗎?  

--可以的

以下寫法正確:

public class Student    {        public static readonly int age = 18;    }


 

  總結

const修飾符:
● 用const修飾的變數是編譯期變數
● 不能把運行時變數賦值給const修飾的變數
● const修飾的變數在聲明時要賦初值
● const修飾的變數不能在前面加static修飾
● cosnt也可以修飾參考型別變數,但一定要給參考型別變數賦null初值


readonly修飾符:   
● 用readonly修飾的變數是運行時變數
● 可以把運行時變數賦值給readonly修飾的變數
● readonly修飾的變數在聲明時,既可以賦初值,也可以不賦初值
● readonly修飾的變數可以在前面加static修飾符

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.