0

オンラインでいくつかのコードを見つけました。それは C# であり、vb.net に移植しようとしています。Log サブルーチン内からエバリュエーター関数を呼び出すのに助けが必要です。C# では、エバリュエーターがログで呼び出されたときにパラメーターを期待していないように見えます。ただし、VB は Match パラメータを要求し続けます。魔法とは何ですか?VB.NET で動作させるにはどうすればよいですか? ありがとう。

private string evaluator(Match match)
{
    Pri pri = new Pri(match.Groups[1].Value);
    return pri.ToString()+" ";
}

private void Log(EndPoint endPoint, string strReceived)
{
...
string strMessage = string.Format("{0} : {1}", 
    endPoint, m_regex.Replace(strReceived, evaluator));
...
}
4

1 に答える 1

1

C# バージョンは の(string, MatchEvaluator)オーバーロードを使用しており、メソッド名からデリゲート型Regex.Replace()への暗黙的な変換を使用しています。そのオーバーロードに関するMSDN ドキュメントMatchEvaluatorを参照してください。

MSDN ページでは、次のように呼んでいます。

Dim result As String = rx.Replace(text, AddressOf RegExSample.CapText)

そのため、必ずAddressOfキーワードを使用してください。

于 2013-06-01T06:16:13.700 に答える