我正在尝试实施此示例
http://blog.evonet.com.au/post/Gridview-with-highlighted-search-results.aspx
但我遇到的唯一问题是VB.net的AddressOf关键字,我无法在C#.net中转换。
任何人都可以帮我解决这个问题,我应该用什么方法让它发挥作用。
感谢。
编辑:我在stackoverflow上发现了一些关于类似问题的搜索,但我无法理解它们。
答案 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#就是这样。