关于传递方法的问题.

byyt 2010-08-27 10:16:21
大家好,碰到为方法传递参数的问题,希望有朋友能指点一下:
代码如下,在实例化的时候需要将方法传递过去.
class Class1
{
public Class1(Action<object> action, Func<object, bool> canDo)
{
.....
}
}

public class Class2
{
......
public DO()
{
cmd = new Class1(Search, CanExecute);//实例化
}
public void Search(object parameter)
{.....}
public bool CanDo(object parameter)
{.....}
}

我现在想在实例化cmd的时候能指定参数,这个应该怎样做呢?
...全文
108 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Peter200694013 2010-08-27
  • 打赏
  • 举报
回复
没太明白,能详细的说下么?
byyt 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jointan 的回复:]
class Class1
{
public Class1(Action<object> action, Func<object, bool> canDo,params object [] param)
{
.....
}
}

param为可变参数
[/Quote]

其实我是想在传递 action 和 canDO 的时候分别给他们指定参数,类似直接调用
action(name)
canDo(true)
byyt 2010-08-27
  • 打赏
  • 举报
回复
Class1 就相当于个代理,接受传递过来的方法,然后执行.
jointan 2010-08-27
  • 打赏
  • 举报
回复
class Class1
{
public Class1(Action<object> action, Func<object, bool> canDo,params object [] param)
{
.....
}
}

param为可变参数
johndii 2010-08-27
  • 打赏
  • 举报
回复
天!这是什么行为?!那Class1有嘛用?
是我晕了还是楼主被绕进去了,完成什么需求。
ICanUseThisID 2010-08-27
  • 打赏
  • 举报
回复
在new class1的时候把参数也传进去,不就可以了?
porschev 2010-08-27
  • 打赏
  • 举报
回复
byyt 2010-08-27
  • 打赏
  • 举报
回复
有朋友给个建议不?
byyt 2010-08-27
  • 打赏
  • 举报
回复
不好意思,笔误了.
cmd = new Class1(Search, CanExecute);
应该改为
cmd = new Class1(Search, CanDO);
这2个方法都在下面声明了.
我现在想做的是,给它们指定参数.
一克代码 2010-08-27
  • 打赏
  • 举报
回复
Class1 cmd=new Class1(action,canDo);

action,canDo要先声明!
happyboyxq 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wuyq11 的回复:]
//把方法当作参数传递
DisplayProcess(Filter);
//匿名委托
DisplayProcess(delegate(Process process) { return process.WorkingSet64 >= 20 * 1024 * 1024; });
//lambda表达式
DisplayProcess(process => process.……
[/Quote]

正解,把方法当参数传,就用委托。
wuyq11 2010-08-27
  • 打赏
  • 举报
回复
//把方法当作参数传递
DisplayProcess(Filter);
//匿名委托
DisplayProcess(delegate(Process process) { return process.WorkingSet64 >= 20 * 1024 * 1024; });
//lambda表达式
DisplayProcess(process => process.WorkingSet64 >= 20 * 1024 * 1024);
private static void DisplayProcess(Predicate<Process> match)
{
foreach(var process in Process.GetProcesses())
{
}
}
private static bool Filter(Process process)
{
return process.WorkingSet64 >= 20 * 1024 * 1024;
}
Peter200694013 2010-08-27
  • 打赏
  • 举报
回复
Class1中有对应的delegate 成员吧...?
public Class1(Action<object> action, Func<object, bool> canDo)

构造中把传过来的方法存在delegate成员中..

Class1中对应的调用 action 和canDo的方法怎么写的?

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧