关于delegate的问题

shanyang1 2013-05-03 02:31:53
class A里面有delegate
定义为
public delegate void aaa();
public aaa aaafunc=(aaa)Marshal.GetDelegateForFunctionPointer(addr4function,typeof(aaa));

在class B里面打算调用aaafunc
于是用classA.aaafunc();但是输入classA.后面找不到aaafunc,只能找到aaa

请问要如何在class B里面调用aaafunc?

...全文
194 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
luochaowei 2013-05-03
  • 打赏
  • 举报
回复
当然你要在另外一个地方用到a.aaaevent+=fun;
luochaowei 2013-05-03
  • 打赏
  • 举报
回复
如果是这样的话,有很多方法 ,你可以把这个窗体传到那个窗体里面去,
引用 3 楼 shanyang1 的回复:
[quote=引用 1 楼 luochaowei 的回复:] 在clss B中定义方法 Fun(){ A a = new A(); a.aaafunc(); } 这样就好了
如果class A是一个窗体form呢?aaafunc是要实时改变该form上的lable[/quote] 那就再定义一个事件 比如 在A中有这么一个 public aaa aaaevent; 在比如A中某个方法中加一个 if(aaaevent!=null){ aaaevent(); } 然后在外面调用A中这个方法 的时候就会自己触发事件
福惜 2013-05-03
  • 打赏
  • 举报
回复
B里面不是调用,是在B里面定义一个方法然后用A的委托来接。
hello_bonjour 2013-05-03
  • 打赏
  • 举报
回复
匿名方法,委托,lambda,事件这些概念都挺绕的,我现在还糊里糊涂。
catchdream 2013-05-03
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
http://bbs.csdn.net/topics/360140208
+1
老张一笑 2013-05-03
  • 打赏
  • 举报
回复
你不妨直接提出的你需求,或许有更好的解决方案.
老张一笑 2013-05-03
  • 打赏
  • 举报
回复
public delegate void aaa(); 这句话相当于 public class class1{} 意思是你可以使用aaa这个委托类型, 而public aaa aaafunc 是这个类的成员.必须实例化才能使用.
threenewbee 2013-05-03
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/360140208
shanyang1 2013-05-03
  • 打赏
  • 举报
回复
引用 1 楼 luochaowei 的回复:
在clss B中定义方法 Fun(){ A a = new A(); a.aaafunc(); } 这样就好了
如果class A是一个窗体form呢?aaafunc是要实时改变该form上的lable
wedding123 2013-05-03
  • 打赏
  • 举报
回复
委托及事件,请楼主仔细看看,很多帖子已经说得很清楚了
luochaowei 2013-05-03
  • 打赏
  • 举报
回复
在clss B中定义方法 Fun(){ A a = new A(); a.aaafunc(); } 这样就好了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧