C#不同类间通过事件传递参数
C#中不同类之间传递参数的⽅法有许多,这⾥介绍其中⼀种⽅法,通过事件传递参数:
定义两个类ClassA和ClassB,要通过事件将ClassA中成员class_A,传递到ClassB,同时ClassB中成员class_B能够传递给ClassA 代码如下:
⼀、从EventArgs基类中派⽣⼀个事件数据类:
public class MyEventArgs:EventArgs
{
public string Value_E;
}
⼆、定义两个类,名字为classA和ClassB:
ClassA
public class ClassA
{
public ClassA(string i)
{
Value_A = i;
}
public string Value_A;
//定义委托
public delegate void A_DelegateEventHander(object sender,MyEventArgs e);
//定义委托事件
public event A_DelegateEventHander A_Myevent;
//触发事件
public void NotifyTOB(string newStr)
{
MyEventArgs ee = new MyEventArgs();
ee.Value_E = newStr;
if (A_Myevent != null)
{
A_Myevent(this, ee);
}
writeline方法属于类}
//事件处理函数
public void change(object sender, MyEventArgs e)
{
this.Value_A = e.Value_E;
Console.WriteLine("ClassA中变量Value_A已经改变为:{0}",this.Value_A);
}
}
ClassB
class ClassB
{
public ClassB(string i)
{
Value_B = i;
}
public string Value_B;
//定义委托
public delegate void B_DelegateEventHander(object sender,MyEventArgs e);
//定义委托事件
public event B_DelegateEventHander B_Myevent;
//触发事件
public void NotifyTOA(string newStr)
{
MyEventArgs ee = new MyEventArgs();
ee.Value_E = newStr;
if (B_Myevent != null)
{
B_Myevent(this, ee);
}
}
//事件处理函数
public void change(object sender, MyEventArgs e)
{
this.Value_B = e.Value_E;
Console.WriteLine("ClassB中变量Value_B已经改变为:{0}", this.Value_B);
}
}
三、在Main函数中代码:
ClassA classA = new ClassA("我是A");
ClassB classB = new ClassB("我是B");
classA.A_Myevent +=new ClassA.A_DelegateEventHander(classB.change);
classB.B_Myevent +=new ClassB.B_DelegateEventHander(classA.change);
//不同类间成员变量的访问
classA.NotifyTOB(classA.Value_A);
classB.Value_B = "我是B"; //因为上⼀条语句已经改变了Value_B ,现在改回来以便观察下⼀条语句 classB.NotifyTOA(classB.Value_B);
//在⼀个类中随意修改另⼀个类的成员变量
classA.NotifyTOB("我是改变的B");
classB.NotifyTOA("我是改变的A");
Console.ReadLine();
四、结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论