Обновление с C ++ до C # - PullRequest
       5

Обновление с C ++ до C #

2 голосов
/ 20 октября 2010

У меня есть большое приложение, написанное на C ++. По разным причинам я собираюсь переписать его на C #, я сделал много Delphi на C #, VB на C #, но C ++ на C # я никогда не делал, хотя я компетентен в C ++ Я хочу, чтобы это было как можно более плавное преобразование.

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

Эта статья довольно хорошая, но есть ли что-то еще, что я должен утомить?

http://msdn.microsoft.com/en-us/magazine/cc301520.aspx

Ответы [ 5 ]

6 голосов
/ 20 октября 2010

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

Эта статья достойна.

3 голосов
/ 20 октября 2010

Я бы посоветовал вам обратить внимание на жизненный цикл объектов.

В C ++ вы уничтожаете объекты явно, когда вы покончили с ними. В C # (.NET) нет. Может случиться так, что объект удерживает какой-то важный ресурс (дескриптор файла, соединение с базой данных и т. Д.). Если это проблема, используйте директиву using.

2 голосов
/ 20 октября 2010

Вам нужно перевести дух кода, но не сам код. Вы должны оставить позади все то, что вы должны были сделать в C ++, потому что именно так все и было. Хороший перевод - это очень креативный процесс, поэтому будьте креативны.

1 голос
/ 20 октября 2010

Если у вас есть C ++ dll и вы хотите использовать их в своем проекте C #, вы можете использовать их с помощью pinvoke и DllImport

Будет много отличийв то время как вы будете пытаться преобразовать или переписать неуправляемый код в управляемый.Вот конвертер C ++ в C # , который очень хорош для преобразования вашего кода C ++ в C #, хотя вы не можете ожидать конвертации всего проекта, используя его.

1 голос
/ 20 октября 2010

Работа со строками была ловушкой для меня в начале. Хотя в Visual C ++ вы используете указатели, методы в C # действительно возвращают значения.

dummy = dummy.Replace("a", "b");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...