.NET GUI - C# по сравнению с C++ / CLI

Вы можете использовать git rebase, например, если вы хотите изменить обратно для фиксации bbc643cd, запустите

$ git rebase --interactive 'bbc643cd^'

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

$ git commit --all --amend --no-edit

, чтобы изменить фиксацию, и после этого

$ git rebase --continue

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

ПРЕДУПРЕЖДЕНИЕ : обратите внимание, что это изменит SHA-1 этого коммита , а также всех потомков - другими словами, это переписывает историю с этого момента. Вы можете разбить репо, выполнив это , если нажмете команду git push --force

8
задан Bill the Lizard 16 April 2010 в 20:34
поделиться

6 ответов

Я думаю, что большинство рекомендаций по этому вопросу сосредоточено вокруг того факта, что C # - просто лучшая среда для создания приложений .NET, чем C ++ / CLI. Синтаксис чище, инструменты лучше - как в Visual Studio, так и от сторонних разработчиков. Вы получите более широкую и лучшую поддержку от разработчиков, которые почти все будут лучше знакомы с C #.

Приложения C ++ / CLI достаточно отличаются от стандартного C ++ со всеми этими символами ^ и%, которые я, по крайней мере, считаю, НЕ С ++.

. Большинство советов также исходит из того, что вы хотите создать приложение .NET, а C ++ / CLI используется скорее как связующий слой. Когда бы я ни использовал C ++ / CLI, я делал это неохотно и почти всегда, потому что в какой-то сторонней библиотеке было много сложных объектов C / C ++, которые она передавала. При использовании C # и P / Invoke, вам часто приходится создавать классы для отражения структур и классов, содержащихся в файлах заголовков C ++ программного обеспечения, с которым вы взаимодействуете. Синхронизировать их - дело трудоемкое, а ошибки легко сделать. Более того, выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг расплавиться!

Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

Синхронизировать их - дело трудоемкое, а ошибки легко сделать. Более того, выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг расплавиться!

Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

Синхронизировать их - дело трудоемкое, а ошибки легко сделать. Более того, выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг расплавиться!

Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг плавиться!

Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг плавиться!

Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.

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

19
ответ дан 5 December 2019 в 06:38
поделиться

Лично мне нравится C ++ / CLI, но я бы предпочел написать свой пользовательский интерфейс на C #.

C ++ / CLI отлично для работы напрямую с Win32 или говорить с устаревшим кодом, но, на мой взгляд, он слишком многословен, когда дело касается кода пользовательского интерфейса. Код пользовательского интерфейса WinForms на C # приятный и простой (по большей части, ха-ха). Написание кода пользовательского интерфейса на C ++ почти всегда беспорядочно (просто посмотрите на MFC).

Почему бы просто не создать свой пользовательский интерфейс в одной сборке C # и не поместить весь код нижнего уровня в сборку C ++ / CLI? Преимущество C ++ / CLI заключается в том, что вы можете создать управляемый уровень, который может легко вызывать ваш код C #. Затем этот управляемый уровень может легко перенаправлять вызовы на собственный уровень прямого кода C ++ или C.

4
ответ дан 5 December 2019 в 06:38
поделиться

Какие преимущества дает использование C # для вашего графического интерфейса winforms вместо C ++ / CLI (они выглядят одинаково, одинаковые команды)?

Они не выглядят одинаково. На мой взгляд, C # чище и содержит несколько полезных абстракций. Поддержка инструментов также значительно лучше для C # или VB.net.

Посмотрите здесь пример сравнения

И не забывайте продуктивные языковые функции, такие как лямбда-выражения, LINQ, вывод типов и т. Д., Которые, как правило, в первую очередь обращаются к C # и достаточно скоро попадут на VB.net, но редко доходят до C ++ / CLI.

2
ответ дан 5 December 2019 в 06:38
поделиться

Я пишу небольшое приложение, для которого требуется несколько списков, кнопок, текстовых полей. Он будет связан с Boost, MySQL и т. Д. Статическими библиотеками C ++. Проект требует функций win32 ...

Я, вероятно, рискую быть отвергнутым, но если большая часть вашего кода уже написана на C ++ и использовать функциональные возможности C ++, разве не проще написать свой графический интерфейс на Native C ++.

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

0
ответ дан 5 December 2019 в 06:38
поделиться

Я задался вопросом об этом, поэтому в Visual Studio 2008 я создал новый проект приложения Windows Forms, используя C ++ / CLI в качестве языка. Первое, что он сделал, это выдал ошибку. Я воспринял это как показатель того, что этот материал еще не совсем готов к использованию. Возможно, я не даю ему достаточно шансов!

 Файл 'c: \ source \ Test \ Test \ Form1.h' не поддерживает
поддержка синтаксического анализа или генерации кода
потому что он не содержится в
проект, поддерживающий код.

Это происходит всякий раз, когда я пытаюсь открыть созданный мастером файл Form1.h.

0
ответ дан 5 December 2019 в 06:38
поделиться

Да, похоже, большинство людей, которые автоматически предлагают использовать C # вместо C ++, предполагают, что вы уже знаете C # или готовы потратить время на его изучение. Я не понимаю, что ненавидят C ++ / CLI WinForms . По крайней мере, если вы хотите перенести существующий код C ++, он выполняет свою работу. По крайней мере, я добавил графический интерфейс к моему существующему C ++ с помощью WinForms / CLI. Да, я, вероятно, использую C #, если начинал с нуля, так как:

1 Я уже знаю C

2 Я знаю кодировать на C намного проще и быстрее

Но, как я уже сказал, если у вас уже есть код C ++, вы действительно хотите начать с нуля?

0
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: