什么委托:
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");
建一个委托类
/// <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();
}
en我知道了 一个参数是不行的 谢谢 朋友!