2009-06-11 7 views
1

私はC#(ASP.NET)をプログラミングし始めた頃、制限的な定数がどのようになっているのか驚いた。これまでのところ、私はそれらをあまり使わなかったので、私はそのコンセプトを忘れてしまったと感じています。典型的なASP.NETアプリケーションではどのように定数を使用しますか?ASP.NET Webアプリケーションでの定数の使用例はありますか?

のように定数structをどのように宣言しますか?

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を変更したい場合は、1か所で行うことができます。私は通常、読み取り専用で、あなたが何か(すなわちを変更する必要がある場合は、一度

private static readonly Logger = new TextLogger(); 

そして割り当てる必要が参照するのに便利です

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

列挙型を使用したい一定の構造体については

:何かをヌルに初期化してから変更する)、それは定義上constにすることはできません。

+0

+1 "Readonlyは一度だけ割り当てが必要な参照に便利です" – maxbeaudoin

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

1

チェックこのアウトは、答えのいくつかは...あなたを助けるかもしれ

When, if ever, should we use const?

+0

私はこのスレッドを読んでいます。ウェブアプリケーションのコンテキストで定数の使用について議論し、ベストプラクティスの例、エラーメッセージなどの一定のもの、おそらくSystem.Drawing.Colorのようになりますか?知りません。私はあなたのスレッドがその方向に進化していることを認めなければなりません。 – maxbeaudoin

関連する問題