4

我正在尝试实现这个例子

http://blog.evonet.com.au/post/Gridview-with-highlighted-search-results.aspx

但我面临的唯一问题是我无法在 C#.net 中转换的 VB.net 的 AddressOf 关键字

任何人都可以帮我解决这个问题,我应该使用什么替代方法来使它工作。

谢谢。

编辑:我在 stackoverflow 上发现了一些关于类似问题的搜索,但我无法理解它们。

4

4 回答 4

8

你可以把它排除在外。方法组可隐式转换为 C# 中的委托。

return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))

甚至更简单(我认为这需要 C# 2):

return ResultStr.Replace(InputTxt, ReplaceWords);

但既然如此ReplaceWords简单,我会考虑使用 lambda 表达式(需要 C# 3):

return ResultStr.Replace(InputTxt, m => "<span class=highlight>" + m + "</span>");
于 2011-10-11T11:47:26.100 回答
2

根据您发布的链接,我假设您想要这个:

Return ResultStr.Replace(InputTxt, New MatchEvaluator(AddressOf ReplaceWords))

.. 在 C# 中?

如果是这样,您根本不需要AddressOf关键字。MatchEvaluator是委托类型,因此您可以简单地传递一个方法 ( ResultStr.Replace(InputTxt, ReplaceWords))。或者,您可以为此使用匿名方法来减少代码,这是有道理的,因为它没有在其他地方使用:

return ResultStr.Replace(InputTxt, delegate(Match m) {
    return "<span class=highlight>" + m.ToString() + "</span>";
});
于 2011-10-11T11:51:16.390 回答
1

我认为您需要将其翻译为:

new EventHandler(theMethod)
于 2011-10-11T11:49:02.673 回答
1

你应该能够使用这样的东西:

return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))

基本上,在 c# 中,您不需要“addressOf”运算符。我喜欢拥有它,因为它使事情变得非常清楚,但是 c# 就是这样。

于 2011-10-11T11:50:27.413 回答