如何访问传递给构造函数的ref bool变量
本文关键字:构造函数 ref 变量 bool 何访问 访问 | 更新日期: 2023-09-27 18:01:41
我有一个主表单,它调用一个较小的表单。在主要形式中,我有一个称为_dataReady
的bool
,它被设置为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
,因为您的类中的字段不能成为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
检索该值
第二个表单显示为一个对话框,所以它所需要做的就是把它想要的任何信息作为属性公开,当第二个表单关闭时,主表单可以检查该属性,允许它在那个时候做任何合适的事情。