如何访问传递给构造函数的 ref bool 变量?

How to access a ref bool variable passed into the constructor?

我有一个主窗体,它调用一个较小的窗体。在主窗体中,我有一个名为 _dataReadybool,它设置为 false,但是较小的窗体的目的是检查一些事情并查看数据是否准备就绪,在在这种情况下,它将 _dataReady 设置为 true

这是我的问题:我使用输入参数调用迷你表单,例如 (ref bool _dataReady) 但问题是我无法在构造函数块之外访问它。

我尝试制作 private bool 并将 ref 设置为那个,但是在更改 private bool 的状态后 ref 没有进行更改,这与面向对象编程的工作原理。

这是我的一些代码:

//这就是我在 main

中调用我的迷你表单的方式
new FrmAccounting(MyTextBox1.Text.Trim().Replace(",", "").ToInt32(),ref _dataReady).ShowDialog();

这是迷你窗体的构造函数和代码:

public FrmAccounting(decimal Price,ref bool _dataReady)
{
    InitializeComponent();
    dataReady=_dataReady;
}

private bool dataReady;

然而,将表单 (dataReady) 中的 private bool 设置为 true 不会更改 ref(再次不同于对象的工作方式)...就是这样我以为会发生。

我的问题是:如何更改 ref 以便我可以直接在 main 中获得结果?

您不能使用 ref 来做到这一点,因为您 class 中的字段无法成为 ref.

我建议将您的变量包装成 class。您可以传递 class 并使用内部值。

public class Wrapper<T>
{
    public T Value {get;set;}
}

然后像这样使用它:

Wrapper<bool> w = new Wrapper<bool>() { Value = _dataReady };

new FrmAccounting(MyTextBox1.Text.Trim().Replace(",", "").ToInt32(),w).ShowDialog();

之后可以使用 w.Value 检索该值。

你的第二个表单显示为一个对话框,所以它需要做的就是将它想要的任何信息公开为 属性 并且主表单可以检查 属性表单已关闭,允许它在当时做任何适当的事情。