C#中的const和readonly關鍵字詳解
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
1、聲明readonly類型變量一定要賦初值嗎?
不一定,既可以賦初值,也可以不賦初值。
以下不賦初值的寫法正確:
public class Student { public readonly int age; }
以下賦初值的寫法也對:
public class Student { public readonly int age = 18; }
2、運行時變量可以賦值給readonly類型變量嗎?
可以
以下在構造函數中給readonly類型變量賦值是可以的:
public class Student { public readonly int age = 18; public Student(int a) { age = a; } }
3、聲明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修飾符
到此這篇關于C#關鍵字const和readonly的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
DevExpress實現TreeList向上遞歸獲取公共父節(jié)點的方法
這篇文章主要介紹了DevExpress實現TreeList向上遞歸獲取公共父節(jié)點的方法,需要的朋友可以參考下2014-08-08完成OSS.Http底層HttpClient重構封裝 支持標準庫
OSS.Http項目對于.Net Standard標準庫的支持已經遷移完畢,OSS開源系列兩個最底層的類庫已經具備跨運行時支持的能力。本篇文章主要包含 1. HttpClient的介紹,2. 重構的思路, 3. 容易遇到的問題。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02WinForm中實現picturebox自適應圖片大小的方法
這篇文章主要介紹了WinForm中實現picturebox自適應圖片大小的方法,涉及pictureBox控件相關屬性設置技巧,需要的朋友可以參考下2017-05-05