15

誰かがかつて言った

「グローバル変数」は実際には、オブジェクト モデルが弱く、変数が存在する「真の目的」を見つけていないため、単に「情報を保持する」ために作成する変数です。グローバル変数は、ほとんどの場合、より大きなアーキテクチャの変形の兆候です。

それは本当かもしれません。しかし、グローバル変数なしで作成された大きくて優れたプログラムの良い例を私は知りません。スコープは実際のキーです。クラスが 1 つしかないプログラムでは、そのパラメーターはグローバル vars ではないと言えます。しかし、彼らはそうです。

ともかく...

私はまだシングルトンの概念を把握しており、私が知る限り、実際には C# では意味がありません。また、グローバルな状態を避けることができない場合でも、静的プロパティでいっぱいのパブリック クラスを単純に使用することは避けるべきだと感じています。

では、シングルトンでもパブリック クラスでもない場合、C# でグローバル変数を使用するにはどうすればよいでしょうか?

そして、いつそれらを使用することになっていますか?それらは避けられない可能性が高いと仮定します。これまで。

そして、静的クラスの使用を避ける必要があるのはなぜですかstatic? それが実際にC#の場合です。

一言で言えば: Csharp でグローバル変数を使用する際のベスト プラクティスは何ですか?

4

1 に答える 1

6

それはすべて文脈の問題です。

計算に必要なアンビエント変数を決定できれば、その計算をより大きなコンテキストにラップできます。そこでは、これらのグローバルに見える変数が存在するスコープが狭くなります (コンテキストに対してローカルになりました)。

contextの複数のインスタンス化が可能になり、独立して動作し、互いに干渉しないため、これは優れています。再入可能なコンテキストとも呼ばれます。

于 2012-04-12T18:40:11.833 に答える