首页 新闻 会员 周边 捐助

c# lambda的问题 没什么豆 路过的大侠帮忙看下吧 谢谢!

0
[已解决问题] 解决于 2013-01-03 18:25

什么委托:

  delegate void obj(string name);

委托对应方法:

void objDelegateMsg(strObj name)
{
MessageBox.Show("hello"+name);
}

调用委托(这里只采用3.5的lambda的方式 朋友们看清楚 别用2.0的 new 产生对象 来调用):

objDelegateMsg(x => x = "name");

这里输不出hello name 在委托对应方法里面 name参数是个function的对象  所以他输的是这个function的对象信息

如果我要输出的值是我调用委托的里面传递的呢? 不知道朋友们看懂了意思没?

 

注 下面有个方法解决 但是我觉得这样写 就失去了第一个参数lambda的意义。

代码:

    delegate void obj(string name);
    delegate int obj<T>(T t1,T t2);

    delegate string strObj(string name);

     void objDelegateMsg(strObj name, string str)
      {
           MessageBox.Show("hello"+name(str));
       }


      string strObj(string str)
       {
           return str;
       }
 
//调用
 objDelegateMsg(x => x = "name","NAME");
s_p的主页 s_p | 初学一级 | 园豆:140
提问于:2013-01-03 15:14
< >
分享
最佳答案
0

建一个委托类

/// <summary>
    /// 主题:委托类
    /// 描述:用于定义委托和构造方法
    /// </summary>
    public class myclass
    {
        public  delegate void obj(string name);
        public void objDelegateMsg(obj Method, string name)
        {
            Method("hello:"+name);
        }
    }

实例化并调用:

 static void Main(string[] args)
        {
            //StringBuilder stb = new StringBuilder("hello");
            myclass my = new myclass();//实例化类
            my.objDelegateMsg(x => Console.WriteLine(x), "your name!");//lambda表达式输出
            Console.Read();
        }

奖励园豆:5
伏草惟存 | 小虾三级 |园豆:1420 | 2013-01-03 17:05

en我知道了 一个参数是不行的  谢谢 朋友!

s_p | 园豆:140 (初学一级) | 2013-01-03 18:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册