VB.net на C # Эквивалент "AddressOf" - PullRequest
       44

VB.net на C # Эквивалент "AddressOf"

4 голосов
/ 11 октября 2011

Я пытаюсь реализовать этот пример

http://blog.evonet.com.au/post/Gridview-with-highlighted-search-results.aspx

, но единственная проблема, с которой я сталкиваюсь, это ключевое слово AddressOf VB.net, которое я не могу преобразовать в C # .net

Кто-нибудь может мне помочь с этим, какую альтернативу я должен использовать, чтобы заставить это работать.

Спасибо.

Редактировать: я нашел некоторые поиски в stackoverflow относительно подобных проблем, ноЯ не могу их понять.

Ответы [ 4 ]

8 голосов
/ 11 октября 2011

Вы можете просто пропустить это. Группы методов неявно преобразуются в делегаты в C #.

return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))

Или даже проще (я думаю, что это требует C # 2):

return ResultStr.Replace(InputTxt, ReplaceWords);

Но поскольку ReplaceWords очень прост, я бы рассмотрел лямбда-выражение (требуется C # 3):

return ResultStr.Replace(InputTxt, m => "<span class=highlight>" + m + "</span>");
2 голосов
/ 11 октября 2011

Исходя из ссылки, которую вы разместили, я предполагаю, что вы хотите это:

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>";
});
1 голос
/ 11 октября 2011

Вы должны быть в состоянии использовать что-то вроде этого:

return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords))

По сути, в c # вам не нужен оператор 'addressOf'. Мне нравится иметь это, так как это делает действительно ясным, что происходит, но C # просто так.

1 голос
/ 11 октября 2011

Я думаю, вам нужно перевести это на:

new EventHandler(theMethod)
...