gpt4 book ai didi

c# - 方法范围的实例变量

转载 作者:太空狗 更新时间:2023-10-30 00:54:39 25 4
gpt4 key购买 nike

我偶尔会发现自己遇到这样一种情况:我有一个变量只能由类中的一个方法使用。目前我使用一个实例变量,但让这个变量对类的其余部分可见似乎是一个糟糕的设计。示例只是为了说明我想要这个的情况:

private Window _Window;
private void Show()
{
if (_Window == null)
{
_Window = new Window();
_Window.Closed += delegate { _Window = null; };
_Window.Show();
}
_Window.BringIntoView();
}

实例变量的存在只是为了防止一次创建多个窗口,所以类的其余部分没有理由知道它。我想起了 C++ 在函数内定义静态变量的能力。

C# 有没有办法实现这样的东西?或者我是否坚持在糟糕的设计和糟糕的封装之间做出选择? (假设此方法确实不需要自己的类。)

最佳答案

Is there any way to achieve something like this is C#?

没有。

Or am I stuck with the decision of choosing between bad design and bad encapsulation? (Assuming that this method truly doesn't warrant a class of its own.)

好吧,我不确定您是否真的受困于其中任何一个。听起来这是对象状态的一部分,即使其他方法都不需要引用其状态的那个方面。同一类中的其他代码引用状态的这一方面是否在逻辑上是错误的?如果是,为什么?

(诚然,我偶尔希望能够在属性声明“内”声明一个字段,从而强制类的其余部分通过属性访问状态...)

关于c# - 方法范围的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com