C#委托跨跨模块传值

来源:互联网 发布:unity3d 麻将桌 编辑:程序博客网 时间:2024/06/08 02:05
C#委托跨跨模块传值

个人感觉C#里的委托有点像C里面的函数指针。下面就简单说说跨模块传值吧。

一般而言,我们如果A类中有B类,那么A类可以调用B类的值,而B类是无法调用A类的值的。而,我们想通过操作B类对A类的某些值进行操作的话,就可以利用委托。

假设是以下函数模型

模块 A()

{

   string str;

   B b;

}

模块 B( )

{

}

我们想通过B中的函数修改A中str的值,就可以定义一个委托 delegatemydel名称吧,然后在模块B中定义个委托类型的变量,可以传入委托函数。如下

模块B()

{

   mydel del;

}

定义好之后,del的值怎么传入呢,怎么给del赋值呢,这就需要用到两个模块之间的构造函数,假设为类

就按如下:并编写一个函数去调用del;但现在在B中还是无法访问到A中内容的。

模块B()

{

  public B(mydel del)

  {

    this.del=del;

  }

    mydel del;

   public void test()

    {

           del();//这里就可以调用del函数修改

     }

}

 那么下一步就是该如何去传A中的内容到B了,定义一个函数test,和委托类型要一致,然后在构造Bb的时候,把函数作为参数传过去。

模块A()

{

string str;

      b(test);

void testA(string strB)

{

  str=strB;

}

}

 

这就就将A中的str的值和testA传给了B中,然后在B中进行修改赋值就会影响A了。

实际例子过段时间找一个传上来。