Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从VB.net到C“相当于”;“地址”;_C#_Vb.net_Addressof - Fatal编程技术网

C# 从VB.net到C“相当于”;“地址”;

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+“”); 我认为

我正在尝试实现这个示例

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

有人能帮我解决这个问题吗?我应该用什么样的方法来让它工作呢

谢谢


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

您可以将其忽略。方法组可隐式转换为C#中的委托

或者更简单(我认为这需要C#2):

<>但是由于替换词如此简单,我会考虑lambda表达式(需要C>3):

返回结果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>";
});