我正在尝试实现这个例子
http://blog.evonet.com.au/post/Gridview-with-highlighted-search-results.aspx
但我面临的唯一问题是我无法在 C#.net 中转换的 VB.net 的 AddressOf 关键字
任何人都可以帮我解决这个问题,我应该使用什么替代方法来使它工作。
谢谢。
编辑:我在 stackoverflow 上发现了一些关于类似问题的搜索,但我无法理解它们。
我正在尝试实现这个例子
http://blog.evonet.com.au/post/Gridview-with-highlighted-search-results.aspx
但我面临的唯一问题是我无法在 C#.net 中转换的 VB.net 的 AddressOf 关键字
任何人都可以帮我解决这个问题,我应该使用什么替代方法来使它工作。
谢谢。
编辑:我在 stackoverflow 上发现了一些关于类似问题的搜索,但我无法理解它们。
你可以把它排除在外。方法组可隐式转换为 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>");
根据您发布的链接,我假设您想要这个:
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>";
});
我认为您需要将其翻译为:
new EventHandler(theMethod)
你应该能够使用这样的东西:
return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))
基本上,在 c# 中,您不需要“addressOf”运算符。我喜欢拥有它,因为它使事情变得非常清楚,但是 c# 就是这样。