学习委托遇到的问题 这个代码怎么改才正确啊?

问题描述

usingSystem;namespaceDelegate{///<summary>///Class1的摘要说明。///</summary>///classClass1{///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(string[]args){////TODO:在此处添加代码以启动应用程序//PeopleGreeting("好人",ChineseGreeting);Console.ReadLine();}publicdelegatevoidGreetingDelegate(stringname);publicvoidEnglishGreeting(stringname){Console.WriteLine("morning"+name);}publicvoidChineseGreeting(stringname){Console.WriteLine("早上好~"+name);}privatestaticvoidPeopleGreeting(stringname,GreetingDelegateGreetingMethod){GreetingMethod(name);}}}我用的是VS2003

解决方案

解决方案二:
[STAThread]staticvoidMain(string[]args){////TODO:在此处添加代码以启动应用程序//PeopleGreeting("好人",a);Console.ReadLine();}publicdelegatevoidGreetingDelegate(stringname);publicvoidEnglishGreeting(stringname){Console.WriteLine("morning"+name);}publicvoidChineseGreeting(stringname){Console.WriteLine("早上好~"+name);}GreetingDelegatea=newGreetingDelegate(ChineseGreeting);ChineseGreetingb=newChineseGreeting(EnglishGreeting);privatestaticvoidPeopleGreeting(stringname,GreetingDelegateGreetingMethod){GreetingMethod(name);}
解决方案三:
//输出:早上好~好人//如果你用PeopleGreeting("好人",b);//输出:morning好人
解决方案四:
GreetingDelegate和类有相似之处,在使用之前是需要实例化的:PeopleGreeting("好人",newGreetingDelegate(ChineseGreeting));PeopleGreeting方式的第二个参数是一个委托型的实例,你不能直接传递方法,而是应该先创建一个GreetingDelegate的实例,将你真正需要调用的方法ChineseGreeting传给该委托的实例,否则委托并不知道它应该调用哪个方法。回忆一下在winform中是如何使用事件的吧,比如一个按钮的点击事件:button.Click+=newEventHandler(click_process_method_name);EventHandler实际上也是一个委托,因此我们也同样需要先将它实例化
解决方案五:
以上两个方法都不成功啊~~
解决方案六:
我用这个方法作出来了classClass1{///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(string[]args){////TODO:在此处添加代码以启动应用程序//Class1cls=newClass1();GreetingDelegatea=newGreetingDelegate(cls.EnglishGreeting);GreetingDelegateb=newGreetingDelegate(cls.ChineseGreeting);PeopleGreeting("好人",b);Console.ReadLine();}publicdelegatevoidGreetingDelegate(stringname);publicvoidEnglishGreeting(stringname){Console.WriteLine("morning"+name);}publicvoidChineseGreeting(stringname){Console.WriteLine("早上好~"+name);}privatestaticvoidPeopleGreeting(stringname,GreetingDelegateGreetingMethod){GreetingMethod(name);}}类的实例中的方法进行绑定
解决方案七:
此题LZ好好翻下书这个问题就解决了你这样上来发贴求解还是不会牢固的

时间: 2024-09-20 06:27:01

学习委托遇到的问题 这个代码怎么改才正确啊?的相关文章

传参-刚开始学习VB.NET 怎么把逻辑代码和业务代码分开写?Form可以调用,代码本身可能会有一点问题

问题描述 刚开始学习VB.NET 怎么把逻辑代码和业务代码分开写?Form可以调用,代码本身可能会有一点问题 From1 Imports System.Data Imports System.Data.OracleClient Imports System.Text Public Class Form1 #Region "定义变量" Private ConnString As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(

【新手学习】请问下面这段代码是进行了so加密吗?

问题描述 [新手学习]请问下面这段代码是进行了so加密吗? 请问是so加密还是什么加密方式? 我按照之前的sig参数分析文档,计算出的sig并不正确. 可能方向错误了,不知道是不是so加密? 解决方案 http://bbs.csdn.net/topics/390995938 解决方案二: 我在很多網站看過,這個應該就是了 解决方案三: 我怎么看那只是一个URL编码 解决方案四: 根据这里的http://bbs.csdn.net/topics/391046866代码,没见到Native方法,应该没

用java建立无向图,然后进行深度和广度遍历,下列的代码怎么改

问题描述 用java建立无向图,然后进行深度和广度遍历,下列的代码怎么改 import java.util.LinkedList;import java.util.Queue;class MatrixUDG { static int vlen; int elen; int[][] mMatrix; char[] mVexs; private int number = 7; private boolean[] flag; int[][] edges; MatrixUDG(char[] vexs c

c++-这段代码怎么改,才能运行(main的第一行要保留)

问题描述 这段代码怎么改,才能运行(main的第一行要保留) #include using namespace std; class student { public: student(int n,float s):num(n),score(s){} void change(int n,float s){num=n;score=s;} void display(){cout<<num<<" "<<score<<endl;} private

mysql-求教!下面的MySQL代码怎么改成sqlserver的?拜托拜托!

问题描述 求教!下面的MySQL代码怎么改成sqlserver的?拜托拜托! CREATE TABLE trade ( tradeid int NOT NULL PRIMARY KEY identity(17,1), userid int NOT NULL, tradetime datetime NOT NULL, KEY "user_id_fk" ("userid"), CONSTRAINT "user_id_fk" FOREIGN KEY (

printf-c语言 残缺程序(函数)的代码怎么改?

问题描述 c语言 残缺程序(函数)的代码怎么改? 描述 Cloud是个喜欢探险的程序员,在一次探险的时候,偶然发现了一些残缺的文件.这些文件上都是用c/c++写的程序代码.为了解开残缺文件的谜团,Cloud决定尽力补全这些残缺的程序代码,以便发现更多的秘密.第一份残缺文件上的代码如下,请帮助他补全程序.(打星号的地方需要补全) 程序名称:计算从1到n之间的完数个数. #include ****** ******(******) { int i,s; s=******; for(i=******;

gcc vc++6.0-同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢!

问题描述 同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢! #include int main() { char deno[1000]={''},num,i=0,remain=0; scanf("%s %d",deno,&num); //获取被除数.除数 if(!num) return (-1); while(deno[i]!='') deno[i++]-='0'; //转换成数字 deno[i]='#'; //结束标志 i=0; while(deno

指针与整形变量-下面的代码怎样改啊,请大家帮忙

问题描述 下面的代码怎样改啊,请大家帮忙 void PrintTree(MyHuffmanNode* root int n) { if (root == NULL) return; for (int i=0;i<n;i++) { cout<<"" ""; } if (root->father==0) { cout<<""|_""; } else { cout<<"&qu

干净的代码是改出来的

对于程序员来说,最终的也是最基本的目标就是能写出一手好的代码.随着代码量的增长,自身对什么是好的代码的认识也渐渐有了不断的调整.   1 注释真的那么重要么? 最好的注释就是代码.这句话确实是没有错误的.如果一个函数占用了一屏的版面,原因是由于各种各样的注释和解释性的 // ** 等说明文档,确实是比较恼人的.与其花过多的时间花精力在注释和说明的编写上面,不如花时间在变量名的编写上面.   不能说没有注释的代码一定是天书.在程序员界来说,其实有许多是大家默认的约定,以php为例子 如果说func