VB.net到C#等效的“AddressOf”

时间:2011-10-11 11:45:17

标签: c# vb.net addressof

我正在尝试实施此示例

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

但我遇到的唯一问题是VB.net的AddressOf关键字,我无法在C#.net中转换。

任何人都可以帮我解决这个问题,我应该用什么方法让它发挥作用。

感谢。

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

4 个答案:

答案 0 :(得分: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>");

答案 1 :(得分: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>";
});

答案 2 :(得分:1)

我认为您需要将其转换为:

new EventHandler(theMethod)

答案 3 :(得分:1)

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

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

基本上,在c#中你不需要'addressOf'运算符。我喜欢它,因为它真的很清楚,但是c#就是这样。