程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 比較C#中的readonly與const(2)

比較C#中的readonly與const(2)

編輯:關於C語言

可維護性

readonly以引用方式進行工作,某個常量更新後,所有引用該常量的地方均能得到更 新後的值。

const的情況要稍稍復雜些,特別是跨程序集調用:

public class Class1
{
  public static readonly int A = 2; //A為運行時常量
  public const int B = 3; //B為編譯時常量
}
public class Class2
{
  public static int C = Class1.A + Class1.B; //變量C的值為A、B之和
}

Console.WriteLine(Class2.C); //輸出"5"

假設Class1與Class2位於兩個不同的程序集,現在更改Class1中的常量值:

public class Class1
{
  public static readonly int A = 4; //A為運行時常量
  public const int B = 5; //B為編譯時常量
}

編譯Class1並部署(注意:這時並沒有重新編譯Class2),再次查看變量C的值:

Console.WriteLine(Class2.C); //輸出"7"

結果可能有點出乎意料,讓我們來仔細觀察變量C的賦值表達式:

public static int C = Class1.A + Class1.B;

編譯後與下面的形式等價:

public static int C = Class1.A + 3;

因此不管常量B的值如何變,對最終結果都不會產生影響。雖說重新編譯Class2即可解 決這個問題,但至少讓我們看到了const可能帶來的維護問題。

性能比較

const直接以字面量形式參與運算,性能要略高於readonly,但對於一般應用而言,這 種性能上的差別可以說是微乎其微。

適用場景

在下面兩種情況下:

a.取值永久不變(比如圓周率、一天包含的小時數、地球的半徑等)

b.對程序性能要求非常苛刻

可以使用const常量,除此之外的其他情況都應該優先采用readonly常量。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved