当前位置:编程学习 > C#/ASP.NET >>

关于delegate的问题

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?

--------------------编程问答-------------------- 在clss B中定义方法 Fun(){
    A a = new A();
    a.aaafunc();
}

这样就好了 --------------------编程问答-------------------- 委托及事件,请楼主仔细看看,很多帖子已经说得很清楚了 --------------------编程问答--------------------
引用 1 楼 luochaowei 的回复:
在clss B中定义方法 Fun(){
    A a = new A();
    a.aaafunc();
}

这样就好了

如果class A是一个窗体form呢?aaafunc是要实时改变该form上的lable --------------------编程问答-------------------- http://bbs.csdn.net/topics/360140208 --------------------编程问答-------------------- public delegate void aaa();
这句话相当于 public class class1{}
意思是你可以使用aaa这个委托类型,
而public aaa aaafunc 是这个类的成员.必须实例化才能使用. --------------------编程问答-------------------- 你不妨直接提出的你需求,或许有更好的解决方案. --------------------编程问答--------------------
引用 4 楼 caozhy 的回复:
http://bbs.csdn.net/topics/360140208

+1 --------------------编程问答-------------------- 匿名方法,委托,lambda,事件这些概念都挺绕的,我现在还糊里糊涂。 --------------------编程问答-------------------- B里面不是调用,是在B里面定义一个方法然后用A的委托来接。 --------------------编程问答-------------------- 如果是这样的话,有很多方法 ,你可以把这个窗体传到那个窗体里面去,

引用 3 楼 shanyang1 的回复:
Quote: 引用 1 楼 luochaowei 的回复:

在clss B中定义方法 Fun(){
    A a = new A();
    a.aaafunc();
}

这样就好了

如果class A是一个窗体form呢?aaafunc是要实时改变该form上的lable


那就再定义一个事件 比如 在A中有这么一个
public aaa aaaevent;
在比如A中某个方法中加一个
if(aaaevent!=null){
aaaevent();
}
然后在外面调用A中这个方法 的时候就会自己触发事件 --------------------编程问答-------------------- 当然你要在另外一个地方用到a.aaaevent+=fun;
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,