一道题目大家都选B,我有点疑惑,大家解释下(欢迎高手)
声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是( )。
a)void myCallBack(int x) ;
b)int receive(int num) ;
c)string receive(int x)
请问什么是“委托产生的回调方法的原型”?
------------
看了网上的解释,都选B,说是因为myCallBack(int x);里面参数是INT型的,所以就是B了
但是,问题来了,我记得以前的一个例子
C# code
public delegate void ScoreChangeEventHandler(int newscore, ref bool cancel);
最后调这个委托时时这样的
//定义事件的类
public class referee
{
public referee(Game game)
{
game.ScoreChange+=new ScoreChangeEventHandler(game_ScoreChange);
}
private void game_ScoreChange(int newscore,ref bool cancel)
{
if(newscore<100)
{
System.Console.WriteLine("good");
}
else
{
System.Console.WriteLine("bad");
}
}
}
显然game_ScoreChange是VOID类型的,而不是参数类型(又是INT ,有是 ref bool)
所以我觉得上面的A,B,C都是正确的,不知道大家怎么看的,希望高手指正
------解决方案-------------------- public delegate int myCallBack(int x);
则该委托产生的回调方法的原型必须满足:
1)返回类型与delegate一致
2)参数类型,顺序,个数必须与delegate一致
方法的名称不用管了....
因此必须为 int FunName(int param1);
------解决方案-------------------- 看了网上的解释,都选B,说是因为myCallBack(int x);里面参数是INT型的,所以就是B了
=============================
不是里面,是返回值
------解决方案-------------------- b)int receive(int num) ;
------解决方案-------------------- 就是选B,myCallBack指向的函数必须满足相同的返回类型,参数列表类型,这个函数也就是被myCallBack回调的函数了,
------解决方案-------------------- 探讨 引用: b)int receive(int num) ; 这里的INT后委托的前一个INT对应就可以了是吗?
------解决方案-------------------- 所以返回类型是INT型,所以选B呀
------解决方案-------------------- 参数和返回类型必须一致
------解决方案-------------------- B)
没看明白你的例子说明了什么?你的例子中方法是这样声明的:
private void game_ScoreChange(int newscore,ref bool cancel)
void返回类型,两个参数分别是int和ref bool
而定义的委托也是一样,void返回类型,两个参数int和ref bool。所以你的例子正好说明了:委托类型的赋值必须完全符合:
返回类型和签名的定义。
------解决方案-------------------- deletegate和方法的参数类型,参数方法和返回类型都一样就可以了
------解决方案-------------------- 探讨 public delegate void ActionHandler(string args); private void button1_Click(object sender, System.EventArgs e) { Form2 form=new Form2 (); form.OnTextChange+=new ActionHandler(form_OnTextChange); form.Show(); } //调用一个函数 private void form_OnTextChange(string args) { this.textBox1.Text=args; } 调用的时候form_OnTextChange怎么是VOID类型的.而不是 string 的