C#中的const和readonly關(guān)鍵字詳解
const和readonly經(jīng)常被用來修飾類的字段,兩者有何異同呢?
const
1、聲明const類型變量一定要賦初值嗎?
一定要賦初值
public class Student
{
public const int age;
}生成的時候,會報如下錯:

正確的應(yīng)該這樣寫:
public class Student
{
public const int age = 18;
}2、聲明const類型變量可以用static修飾嗎?
不可以
public class Student
{
public static const int age = 18;
}生成的時候,會報如下錯:

正確的應(yīng)該這樣寫:
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
{
}生成的時候,會報如下錯:
正確的應(yīng)該這樣寫:
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類型變量嗎?
可以
以下在構(gòu)造函數(shù)中給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;
}總結(jié)
const修飾符:
- 用const修飾的變量是編譯期變量
- 不能把運行時變量賦值給const修飾的變量
- const修飾的變量在聲明時要賦初值
- const修飾的變量不能在前面加static修飾
- cosnt也可以修飾引用類型變量,但一定要給引用類型變量賦null初值
readonly修飾符:
- 用readonly修飾的變量是運行時變量
- 可以把運行時變量賦值給readonly修飾的變量
- readonly修飾的變量在聲明時,既可以賦初值,也可以不賦初值
- readonly修飾的變量可以在前面加static修飾符
到此這篇關(guān)于C#關(guān)鍵字const和readonly的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#在Windows上調(diào)用7-zip實現(xiàn)壓縮文件
這篇文章主要為大家詳細介紹了C#如何在Windows上調(diào)用7-zip實現(xiàn)壓縮文件,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以學習一下2023-10-10
c# winform treelistview的使用(treegridview)實例詳解
這篇文章主要介紹了c# winform treelistview的使用(treegridview),本文通過實例代碼給大家詳細介紹,需要的朋友可以參考下2017-12-12
Unity性能優(yōu)化Shader函數(shù)ShaderUtil.GetShaderGlobalKeywords用法示例
這篇文章主要為大家介紹了Unity性能優(yōu)化Shader函數(shù)ShaderUtil.GetShaderGlobalKeywords用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
在Framework 4.0中:找出新增的方法與新增的類(一)
經(jīng)常看到有同學在討論Framework 4 的新特性,新方法,于是想寫個程序找出framework4.0中新增的方法和類2013-05-05
C#實現(xiàn)動態(tài)生成靜態(tài)頁面的類詳解
這篇文章主要介紹了C#實現(xiàn)動態(tài)生成靜態(tài)頁面的類,結(jié)合實例形式詳細分析了C#動態(tài)生成靜態(tài)頁面的原理與相關(guān)使用技巧,需要的朋友可以參考下2016-04-04



