private delegate void WT(string s);
private void aa(具体方法)
{
。//这里的函数都一样 最后调用一个方法要看情况来选择
WT wt = new WT(具体方法);//看情况调用 具体方法
}我要根据后面的情况调用方法,而事先不知道调用哪个方法
所以把方法当做参数传递,具体该如何做呢 ?是不是用委托?
private void aa(具体方法)
{
。//这里的函数都一样 最后调用一个方法要看情况来选择
WT wt = new WT(具体方法);//看情况调用 具体方法
}我要根据后面的情况调用方法,而事先不知道调用哪个方法
所以把方法当做参数传递,具体该如何做呢 ?是不是用委托?
解决方案 »
- c# 封送结构体 变长数组的定义问题
- 类似DropDownList的控件
- 异常详细信息: System.NullReferenceException的问题
- 三维数组
- 有没让asp.net用utf-8编码的办法?
- 跪求高手:winfrom中如何在datagrid中添加一个combox
- 关于一个算法(高手请给予解答)
- 在一个Form中,鼠标点一下产生一个Panel,如何做?兄弟姐妹们,出手了!
- 在web项目编译时,生成一个DLL好呢还是每个页页单独一个DLL好?
- 在有VS的环境下,程序能正常运行,没有的情况下会报错(都有.net framework4.0环境),错误日志如下
- c# 软件自动更新 明明更新成功却提示找不到文件
- WPF+WindowsFormsHost,置顶
传递什么委托方法应该是调用者来决定的。
应该这么写:delegate void WT(string s);void foo(WT wt)
{
common operate
wt(s);
}调用
foo(new WT(MyMethod));...void MyMethod(string s)
{
...
}
{
void do(string s);
}
void foo(IWT wt)
{
common operate
wt.do(s);
}调用
foo(new MyWT());...class MyWT : IWT
{
public void do(string s)
{
...
}
}
void foo(Action<string> wt)
{
common operate
wt(s);
}调用
foo((s) => { what you do in mymethod });对比C# 1.x的写法,不知道要简洁多少。
非常感谢 caozhy 给我的回答,很感谢 不但解决了我的疑问 还给我做了深入讲解,比较容易听懂,
在这之前我更本不懂接口,只听说过 实际运用中 从来不用 或许我目前开发用不到,接口的这个方法貌似比我现在用的委托麻烦点,你教我的这个3.0的方法我明天实际操作看看试着消化掉,还有比如方法返回值不同 参数不同的方法 就不能用委托了吗?