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

本文关键字:构造函数 ref 变量 bool 何访问 访问 | 更新日期: 2023-09-27 18:01:41

我有一个主表单,它调用一个较小的表单。在主要形式中,我有一个称为_dataReadybool,它被设置为false,然而,较小形式的目的是检查一些事情,看看数据是否准备好了,在这种情况下,它将_dataReady设置为true

这是我的问题:我调用迷你表单的输入参数,如(ref bool _dataReady),但问题是我没有访问它的构造器块之外。

我尝试制作private bool并设置ref,但在更改private bool的状态后,ref没有采取更改,不像面向对象编程的工作方式。

下面是我的一些代码:

//这是我在主

中调用迷你表单的方式
new FrmAccounting(MyTextBox1.Text.Trim().Replace(",", "").ToInt32(),ref _dataReady).ShowDialog();
这是迷你表单的构造函数和代码:
public FrmAccounting(decimal Price,ref bool _dataReady)
{
    InitializeComponent();
    dataReady=_dataReady;
}
private bool dataReady;

然而,将private bool在表单(dataReady)中设置为true不会改变ref(再次不同于对象的工作方式)…这就是我所预料的。

我的问题是:如何改变ref,这样我就可以直接在主程序中获得结果?

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

您不能使用ref,因为您的类中的字段不能成为ref

我建议将变量包装到一个类中。你可以传递这个类并使用内部值。

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检索该值

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