当前位置:  开发笔记 > 编程语言 > 正文

我如何将其他参数传递给MatchEvaluator

如何解决《我如何将其他参数传递给MatchEvaluator》经验,为你挑选了2个好方法。

我有一些看起来像这样的代码:

text = reg.Replace(text, new MatchEvaluator(MatchEvalStuff));

我需要传递第二个参数,如下所示:

text = reg.Replace(text, new MatchEvaluator(MatchEvalStuff, otherData));

这是可能的,最好的方法是什么?



1> Daniel Plais..:

MatchEvaluator是一个委托,因此您无法更改其签名.您可以创建一个使用附加参数调用方法的委托.使用lambda表达式非常容易:

text = reg.Replace(text, match => MatchEvalStuff(match, otherData));



2> Jon Tackabur..:

对不起,我应该提到我使用2.0,所以我无法访问lambdas.这是我最终做的事情:

private string MyMethod(Match match, bool param1, int param2)
{
    //Do stuff here
}

Regex reg = new Regex(@"{regex goes here}", RegexOptions.IgnoreCase);
Content = reg.Replace(Content, new MatchEvaluator(delegate(Match match) { return MyMethod(match, false, 0); }));

这样我就可以创建一个"MyMethod"方法并将其传递给我需要的任何参数(param1和param2仅用于此示例,而不是我实际使用的代码).

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有