我偶尔会发现自己有一个变量,该变量只能被类中的一种方法使用。目前我使用一个实例变量,但让这个变量对类的其余部分可见似乎是糟糕的设计。示例只是为了说明我想要的情况:
private Window _Window;
private void Show()
{
if (_Window == null)
{
_Window = new Window();
_Window.Closed += delegate { _Window = null; };
_Window.Show();
}
_Window.BringIntoView();
}
实例变量的存在只是为了防止一次创建多个窗口,因此类的其余部分没有理由知道它。我想起了 C++ 在函数中定义静态变量的能力。
有什么方法可以实现这样的C#吗?还是我坚持在糟糕的设计和糟糕的封装之间做出选择?(假设这个方法确实不能保证它自己的类。)