Портирование VB.NET приложение Winforms к C#

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

([^\w:]\s[^\w:]?|\s[^\w:])

Он ищет не- (слово или :) символ, за которым следует пробел, за которым следует необязательный не- (слово или :) персонаж; или пробел, за которым следует не (слово или :) символ. Это будет соответствовать всем вашим желаемым шаблонам разделения. В PHP (обратите внимание, вам нужен модификатор u для работы с символами Юникода):

$input = "CADAVRES [FILM] (Canada : Québec, Érik Canuel, 2009, long métrage) FICTION";
$keywords = preg_split('/([^\w:]\s[^\w:]?|\s[^\w:])/u', $input);
print_r($keywords);

Вывод:

Array
(
    [0] => CADAVRES 
    [1] => FILM
    [2] => Canada : Québec
    [3] => Érik Canuel
    [4] => 2009
    [5] => long métrage
    [6] => FICTION
)

Демонстрация на 3v4l.org [ 1111]

10
задан George Stocker 29 May 2009 в 10:55
поделиться

6 ответов

На основе моего опыта, работающего с некоторыми крупными приложениями, которые смешивают VB и проекты C#, я рекомендовал бы оставить его в VB.NET. Если существуют проблемы с дизайном, то фиксируют их, но преобразование всего этого к C# походит на грязное, ненужное отвлечение мне.

Нестилистические различия между этими двумя языками очень минимальны, таким образом, трудно видеть функциональную потребность, которая вызвала бы преобразование. (Была старая ошибка в Visual Studio 2003, который исключил определенные цепочки ссылок проекта, которые смешали C# и проекты VB в особенных методах, но это - единственное, с которым я когда-либо сталкивался как практическое препятствие.)

Отдельные разработчики, конечно, склонны иметь стилистическое предпочтение, способствующее один или другой, но полное преобразование является большой работой, чтобы сделать для чего-то, что составляет вкус к другой разновидности синтаксического сахара.

16
ответ дан 3 December 2019 в 15:23
поделиться

При использовании чего-то как Отражатель или Анакрино его вывод основан на IL, а не первоисточнике. Производит ли это код, который это, немного лучше открыто для дебатов... Но Вы могли испытать его, так или иначе.:)

6
ответ дан 3 December 2019 в 15:23
поделиться

Хранение его в его текущей форме проблематично, так как это использует часть 'плохого дизайна' методы, которые VB.NET позволяет и далее усложнил бы будущее maintanence.

И Вы думаете, что C# не будет допускать плохие проекты?

Проблемой не является VB, проблемой является парень, который записал это и парень, отказывающийся зафиксировать его. Поэтому предпримите шаги назад, дыхание глубоко, затем начните исправлять код. И кто знает, можно узнать, что некоторые из тех 'плохих методов дизайна' на самом деле имеют большой смысл.

3
ответ дан 3 December 2019 в 15:23
поделиться

Я использовал C-заточку, чтобы сделать преобразование на некоторых наших приложениях, но это совсем не прекрасно. Это преобразовало примерно 95% кода, и я закончил тем, что осуществил рефакторинг, в то время как я вручную фиксировал остающиеся 5%.

1
ответ дан 3 December 2019 в 15:23
поделиться

В моем задании мы использовали переводчика developerfusion, но ничто автоматизированное (просто переводят часть кода или класса, и вручную вставляют результат в c# проекте).

Отражатель является большим инструментом, но можно найти некоторые проблемы при чтении функций лямбды.

Для рефакторинга лучший инструмент, который мы попробовали, Осуществляют рефакторинг Pro.

2
ответ дан 3 December 2019 в 15:23
поделиться

У меня есть некоторые события в VB.NET приблизительно 2 года, но теперь я только использую C# в своей ежедневной разработке. Прежде чем я пытался использовать VB.Net для C# для преобразования моего кода VB.NET в C#, затем я извлек уроки из него и также из книги.

1
ответ дан 3 December 2019 в 15:23
поделиться