C# 从VB.net到C“相当于”;“地址”;
我正在尝试实现这个示例 但是我面临的唯一问题是VB.net的AddressOf关键字,我无法在C#.net中转换它 有人能帮我解决这个问题吗?我应该用什么样的方法来让它工作呢 谢谢C# 从VB.net到C“相当于”;“地址”;,c#,vb.net,addressof,C#,Vb.net,Addressof,我正在尝试实现这个示例 但是我面临的唯一问题是VB.net的AddressOf关键字,我无法在C#.net中转换它 有人能帮我解决这个问题吗?我应该用什么样的方法来让它工作呢 谢谢 编辑:我在stackoverflow上找到了一些关于类似问题的搜索,但我无法理解它们。您可以将其忽略。方法组可隐式转换为C#中的委托 或者更简单(我认为这需要C#2): 但是由于替换词如此简单,我会考虑lambda表达式(需要C>3): 返回结果tr.Replace(inputxt,m=>“”+m+“”); 我认为
编辑:我在stackoverflow上找到了一些关于类似问题的搜索,但我无法理解它们。您可以将其忽略。方法组可隐式转换为C#中的委托 或者更简单(我认为这需要C#2): <>但是由于
返回结果tr.Replace(inputxt,m=>“”+m+“”);
我认为您需要将此转换为:
new EventHandler(theMethod)
您应该能够使用以下内容:
return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))
基本上,在c#中,不需要“addressOf”操作符。我喜欢拥有它,因为它让事情变得非常清楚,但c#就是这样 根据您发布的链接,我假设您希望:
Return ResultStr.Replace(InputTxt, New MatchEvaluator(AddressOf ReplaceWords))
。。在C#中
如果是这样,您根本不需要AddressOf
关键字MatchEvaluator
是一种委托类型,因此您可以简单地传递一个方法(ResultStr.Replace(inputxt,ReplaceWords)
)。或者,您可以为此使用匿名方法来减少代码,这很有意义,因为它没有在其他地方使用:
return ResultStr.Replace(InputTxt, delegate(Match m) {
return "<span class=highlight>" + m.ToString() + "</span>";
});
返回结果tr.Replace(输入文本,委托(匹配m){
返回“+m.ToString()+”;
});
此处无法使用新事件处理程序的可能重复项。他的示例中的方法需要不同的委托类型。没错,我没有阅读提供的链接,只是使用了一个泛型(ish)选项!“MatchEvaluator是EventHandler类型”MatchEvaluator是委托类型。因此,在这两个示例中都使用了委托。第二个代码示例是一个匿名函数。@CodeInChaos这是漫长的一天。谢谢CodeInChaos,我不知道这有那么容易,我认为经验本身就说明了这一点。再次感谢。
return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))
Return ResultStr.Replace(InputTxt, New MatchEvaluator(AddressOf ReplaceWords))
return ResultStr.Replace(InputTxt, delegate(Match m) {
return "<span class=highlight>" + m.ToString() + "</span>";
});