2009-06-11 35 views
1

只要我開始編程C#(ASP.NET),我很驚訝限制性常量是如何。到目前爲止,我還沒有使用過它們,我覺得我錯過了這個概念。你們如何在典型的ASP.NET應用程序中使用常量?ASP.NET Web應用程序中常量的一些示例或用法是什麼?

如何聲明一個常數structSystem.Drawing.Color

如果const無法使用,你們會使用readonly嗎?

我想知道人們如何使用constreadonly並討論替代方案(如果有的話)。

回答

1

常量用於定義程序中不應更改的內容,但需要多次引用。

const int SLEEP_TIME = 500; //500 MS = .5 Seconds 
//Do Something 
Thread.Sleep(SLEEP_TIME); 
//Do Something else 
Thread.Sleep(SLEEP_TIME); 
//Do yet another something. 

現在,如果你想改變SLEEP_TIME你可以在一個地方做到這一點。

至於恆定結構我通常使用的需要分配一次

private static readonly Logger = new TextLogger(); 

或引用枚舉

enum State 
{ 
    Stopped = 0, 
    Running = 1, 
    Paused = 2 
} 

只讀是非常有用的,如果你需要改變一些東西(即:將某些東西初始化爲null,然後將其更改),它根據定義不能是const。

+0

+1「Readonly對於需要分配一次的引用很有用」 – maxbeaudoin 2009-06-11 14:33:21

1

就我的經驗而言,我發現我認爲很多東西都是不變的,實際上並非如此。我最終使用大量的外部設置文件來保存信息(誰想要重新編譯一個網站,如果顏色改變?)

這就是說,我發現常數真的很適合處理數組索引。它有助於澄清他們的意圖。例如...

//not readable - variable names don't help either 
string a = (string)source[0]; 
int b = (int)source[1]; 
bool c = (bool)source[2]; 

或者與常量同樣的事情...

const int 0 = NAME_COLUMN; 
const int 1 = AGE_COLUMN; 
const int 2 = IS_ADMIN_COLUMN; 

//even with bad variable names, we know what they are 
string a = (string)source[NAME_COLUMN]; 
int b = (int)source[AGE_COLUMN]; 
bool c = (bool)source[IS_ADMIN_COLUMN]; 
+0

我喜歡你在聲明常量時考慮重新編譯網站的觀點。 +1。畢竟這是一個討論... – maxbeaudoin 2009-06-11 14:25:02

1

檢查了這一點,一些問題的答案可以幫助你...

When, if ever, should we use const?

+0

我讀過這個線程,我只是想討論常量在Web應用程序上下文中的用法,給出最佳實踐的例子,應該是常量的東西,比如錯誤消息,永遠不應該的東西像一個System.Drawing.Color也許?我不知道。我必須承認,你的線索正在朝着這個方向發展。 – maxbeaudoin 2009-06-11 14:23:33

相關問題