只要我開始編程C#(ASP.NET),我很驚訝限制性常量是如何。到目前爲止,我還沒有使用過它們,我覺得我錯過了這個概念。你們如何在典型的ASP.NET應用程序中使用常量?ASP.NET Web應用程序中常量的一些示例或用法是什麼?
如何聲明一個常數struct
如System.Drawing.Color
?
如果const
無法使用,你們會使用readonly
嗎?
我想知道人們如何使用const
和readonly
並討論替代方案(如果有的話)。
只要我開始編程C#(ASP.NET),我很驚訝限制性常量是如何。到目前爲止,我還沒有使用過它們,我覺得我錯過了這個概念。你們如何在典型的ASP.NET應用程序中使用常量?ASP.NET Web應用程序中常量的一些示例或用法是什麼?
如何聲明一個常數struct
如System.Drawing.Color
?
如果const
無法使用,你們會使用readonly
嗎?
我想知道人們如何使用const
和readonly
並討論替代方案(如果有的話)。
常量用於定義程序中不應更改的內容,但需要多次引用。
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。
就我的經驗而言,我發現我認爲很多東西都是不變的,實際上並非如此。我最終使用大量的外部設置文件來保存信息(誰想要重新編譯一個網站,如果顏色改變?)
這就是說,我發現常數真的很適合處理數組索引。它有助於澄清他們的意圖。例如...
//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];
我喜歡你在聲明常量時考慮重新編譯網站的觀點。 +1。畢竟這是一個討論... – maxbeaudoin 2009-06-11 14:25:02
檢查了這一點,一些問題的答案可以幫助你...
我讀過這個線程,我只是想討論常量在Web應用程序上下文中的用法,給出最佳實踐的例子,應該是常量的東西,比如錯誤消息,永遠不應該的東西像一個System.Drawing.Color也許?我不知道。我必須承認,你的線索正在朝着這個方向發展。 – maxbeaudoin 2009-06-11 14:23:33
+1「Readonly對於需要分配一次的引用很有用」 – maxbeaudoin 2009-06-11 14:33:21