国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

c#.net中const和readonly的區別

2024-07-10 12:44:34
字體:
來源:轉載
供稿:網友
(1) readonly和const都是用來標示常量的。
(2) 初始化賦值不同。
const修飾的常量必須在聲明的同時賦值。例如:
代碼如下:
public class Class1
{
    public const int MaxValue = 10;       //正確聲明
    public const MInValue;                   //錯誤:常量字段要求提供一個值
    public Class1()
    {
        MinValue = 10;
    }
}

readonly字段可以在初始化(聲明或構造函數)的過程中賦值。因此,根據所使用的構造函數,readonly字段可能具有不同的值。
代碼如下:
public class Class1
{
    public readonly int c = 10;           //正確聲明
    public readonly int z;
    public Class1()
    {
        z = 24;//正確
    }
    protected void Load()
    {
        z = 24;//錯誤:無法對只讀的字段賦值(構造函數或變量初始值指定項中除外)
    }
}

readonly是實例成員,所以不同的實例可以有不同的常量值,這是readonly更靈活。
代碼如下:
public readonly Color Red = new Color(255, 0, 0);
public readonly Color Green = new Color(0, 255, 0);
public readonly Color Blue = new Color(0, 0, 255);

(3) const字段是編譯時常數,而readonly字段可用于運行時常數。
    const要求編譯器能夠在編譯時計算出確定的值。在編譯的時候,用計算出的這個確定的值去替換調用該常量的每一個地方。因此不能從一個變量中提取值來初始化常量。
    readonly允許把一個字段設置成常量,但可以執行一些運算,可以確定它的初始值。因為readonly是在計算時執行的,所以可以用某些變量初始化。在運行時才確定的該值。
(4) const默認就是靜態的,而readonly如果設置成靜態的就必須顯示聲明。
(5) const修飾的值的類型也有限制,它只能為下列類型之一(或能夠轉換為下列類型):sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、enum類型或引用類型。注意能夠聲明為const的引用類型只能為string或值為null的其他引用類型。readonly可以是任何類型。
這就是說,當我們需要一個const的常量時,若他的類型限制了它不能再編譯時被計算出確定的值來,那么我們可采取將之聲明為static readonly的方式來解決。但兩者之間還是有一點細微的差別的。看下面兩個不同的文件。
file1.cs
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙陵县| 灯塔市| 永康市| 克什克腾旗| 广汉市| 巴东县| 宣化县| 竹山县| 进贤县| 北碚区| 和静县| 金山区| 佛山市| 荣成市| 吉林市| 天津市| 高青县| 连山| 班戈县| 田东县| 基隆市| 普陀区| 西峡县| 密云县| 海盐县| 万源市| 团风县| 通渭县| 临朐县| 崇义县| 连云港市| 龙山县| 桐梓县| 麻江县| 武宁县| 黄陵县| 乌拉特后旗| 凭祥市| 曲麻莱县| 巴南区| 宁化县|