如何访问传递给构造函数的 ref bool 变量?
How to access a ref bool variable passed into the constructor?
我有一个主窗体,它调用一个较小的窗体。在主窗体中,我有一个名为 _dataReady
的 bool
,它设置为 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
检索该值。
你的第二个表单显示为一个对话框,所以它需要做的就是将它想要的任何信息公开为 属性 并且主表单可以检查 属性表单已关闭,允许它在当时做任何适当的事情。
我有一个主窗体,它调用一个较小的窗体。在主窗体中,我有一个名为 _dataReady
的 bool
,它设置为 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
检索该值。
你的第二个表单显示为一个对话框,所以它需要做的就是将它想要的任何信息公开为 属性 并且主表单可以检查 属性表单已关闭,允许它在当时做任何适当的事情。