我通过引用将bool
传递给另一个类中的方法,以便我可以在方法中更改它(原始参数)。
我还想要一个事件(由该方法订阅)能够改变它。
这样做:
class myCheckBox : CheckBox
{
bool b1;
public myCheckBox(ref bool b)
{
b1 = b;
this.CheckedChanged += new EventHandler(myCheckBox_CheckedChanged);
}
void myCheckBox_CheckedChanged(object sender, EventArgs e)
{
b1 = Checked;
}
}
没有帮助,因为b1只是b的副本。
有没有办法:ref b1 = ref b;
?如果没有,我该如何解决?
(这些例子只是为了解释这个问题。)
答案 0 :(得分:4)
您通常会将参数传递给您的事件处理程序,该事件处理程序具有可由事件处理程序修改的布尔属性:
public class MyEventArgs : EventArgs
{
public bool Value { get; set; }
}
public class MyClass
{
public void method1(ref bool b)
{
MyEventArgs e = new MyEventArgs()
{
Value = b
};
eventMethod(e);
b = e.Value;
}
void eventMethod(MyEventArgs e)
{
e.Value = false;
}
}
您可能还想看一下在.NET中建立的标准事件处理程序模式:How to: Publish Events that Conform to .NET Framework Guidelines (C# Programming Guide)
答案 1 :(得分:1)
传递包含字段的类,表示它的字符串,并保存它们而不是b1。然后使用反射。
答案 2 :(得分:0)
让b1
成为班级的公共字段。
或者是私人的,带有公共吸气剂和公共制定者的财产。
答案 3 :(得分:0)
当我将代码复制到Console应用程序中时(当然必须更改为静态函数和var b1),当从Main调用时,它可以正常工作:
bool b = true;
method1(ref b);
Console.writeLine(b1);
打印'false'....