クラス内の 1 つのメソッドによってのみ使用される変数がある状況に陥ることがあります。現在、私はインスタンス変数を使用していますが、この変数をクラスの残りの部分から見えるようにするのは悪い設計のようです。これが必要な状況を説明するための例:
private Window _Window;
private void Show()
{
if (_Window == null)
{
_Window = new Window();
_Window.Closed += delegate { _Window = null; };
_Window.Show();
}
_Window.BringIntoView();
}
インスタンス変数は、一度に複数のウィンドウが作成されるのを防ぐためだけに存在するため、クラスの残りの部分がそれについて知る必要はありません。関数内で静的変数を定義する C++ の機能を思い出しました。
このようなことをC#で達成する方法はありますか? それとも、悪い設計と悪いカプセル化のどちらかを選択するという決定に行き詰まっていますか? (このメソッドが本当に独自のクラスを保証しないと仮定します。)