程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#的只讀域

C#的只讀域

編輯:關於C#

域的聲明中如果加上了readonly修飾符,表明該域為只讀域。對於只讀域我們只能在域的定義中和它所屬的構造函數中進行修改,在其它情況下,域是“只讀”的。

熟悉c和C++的程序員可能習慣了使用const和#define定義一些容易記住的名字來表示某個數值。static和readonly修飾符可以起到同樣的效果:

public class A
{
  public static readonly double PI=3.14159;
  public static readonly Color White=new Color(255,255,255);
  public static readonly int kByte=1024;
  ......//other members
}

這樣,在程序中我們就可以直接使用PI來指代圓周率,white來表示白色,等等。

那麼,使用static readonly與使用const有什麼區別呢?簡單地說,const型表達式的值在編譯時形成,而static readonly表達式的值直到程序運行時才形成。看下面這個例子:

程序清單12-2:

using System;
namespace Program1
{
  public class A
  {
     public static readonly int X=1;
  }
}
namespace Program2
{
  class Test
  {
    static void Main(){
        Console.WriteLine(Program1.A.x);
    }
   }
}

假定名字空間Program1和Program2表示兩個分別獨立編譯的程序(有關名字空間的概念我們將放在後續章節中介紹)。在這裡,域X的靜態只讀的,它的值由於是在編譯時形成的,所以無論是否改變Program1中X的值,只要不重新編譯Program2,Program2的輸出就不會發生變化。如果Program2已經安裝在用戶的系統上,對Program1的升級不會影響到舊的Program2的使用。這種技術有利於進行版本控制。

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