Опишите Вас опыт использования Microsoft C ++/CLI [закрытый]

Хорошо, чтобы сначала это понять, давайте запустим эксперимент

import pandas as pd
import datetime as dt
a = dt.datetime(2000,1,1)
b = dt.datetime(2000,1,2)
c = dt.datetime(2000,1,3)
df = pd.DataFrame({'A':[4,5,6]}, index=[a,b,c])

Теперь давайте воспользуемся

df2[0:2]

, что дает нам

            A
2000-01-01  1
2000-01-02  2
[1111 ] Теперь это поведение согласуется с Python и нарезкой списка, но если вы используете df[a:c]

Вы получите

    A
2000-01-01  1
2000-01-02  2
2000-01-03  3

, это потому, что df[a:c] переопределяет метод нарезки списка по умолчанию в качестве индексов не соответствуют целым числам, и в функции, написанной на Pandas, которая также включает в себя последний элемент, поэтому, если ваши индексы были целыми числами, pandas по умолчанию использует встроенную нарезку, тогда как если они не являются целыми числами, этот эффект наблюдается, как уже упоминалось в ответ от Jezrael, лучше использовать loc, так как это имеет больше согласованности по всем направлениям.

8
задан Deduplicator 16 September 2014 в 01:39
поделиться

4 ответа

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

По моему мнению, язык столь же легко кодировать в как C# хотя с небольшой синтаксической неловкостью. Тем не менее синтаксис намного более прост, чем та Управляемая вещь Расширений, которую Microsoft придумала ранее.

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

Что касается пригодности C++ / CLI, я думаю, что это останется строго языком для совместимости с C++. Если Вы пишете в целом новое приложение, существует абсолютно нулевая причина выбрать C++ / CLI, скажем, C#. Как я сказал, это неудобно использовать, чем последний.

5
ответ дан 5 December 2019 в 08:26
поделиться

Я использовал его для записи тонких слоев интеграции между управляемым и собственным кодом. Это - все все же.

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

Существует две других больших уникальных функции хотя:

  • Деструкторы, которые делают что-то полезное. В C# деструктор является финализатором. В C++ это - надлежащий детерминировано названный деструктор. Это означает, что C++ / CLI имеет самую полную инфраструктуру для работы с IDisposable. C# только помогает клиентам (через оператор использования), но только C++ / CLI помогает конструкторам также. Я надеюсь, что, возможно, однажды C# поглотит эту функцию.

  • Вводящие утку шаблоны, которые могут использоваться наряду с дженериками CLI. Другая вещь, которая была бы очень полезна в C#, хотя это могло быть сделано намного больше беспрепятственно без исторического багажа.

Но C# достаточно хорош без последних двух вещей, что я не испытываю желание использовать C++ / CLI обычно.

8
ответ дан 5 December 2019 в 08:26
поделиться

Мы широко используем C ++ / CLI. Мы использовали его для перетаскивания устаревшего приложения MFC в эпоху .Net, чтобы мы могли теперь написать большинство новых функций в C # и интегрировать их с унаследованным кодом MFC с использованием C ++ / CLI, оборачивая собственные классы, а также создавая новые управляемые бизнес-объекты. , В наших старых сборках мы все еще пишем новые функциональные возможности и в C ++ / CLI.

У меня нет опыта работы с «управляемым C ++», но использование C ++ / CLI очень удобно по сравнению с MFC и Visual C ++. У него гораздо более чистый синтаксис, чем у управляемого C ++ или Visual C ++, и у нас не было никаких проблем с получением даже младших разработчиков с его помощью.

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

Мы используем Visual Assist X для поддержки рефакторинга (приемлемо), MbUnit / Gallio для модульного тестирования управляемых классов и NMock или RhinoMocks для наши насмешливые рамки.

В целом, я бы сказал, что язык спас наш продукт и позволяет нам использовать все новые захватывающие вещи, происходящие в мире разработки. Если бы мы все еще использовали исключительно Visual C ++ / MFC, то у нас были бы трудности с набором разработчиков и были бы гораздо более ограничены в выборе COTS, чем мы используем .Net.

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

Мы используем Visual Assist X для поддержки рефакторинга (приемлемо), MbUnit / Gallio для модульного тестирования управляемых классов и NMock или RhinoMocks для наши насмешливые рамки.

В целом, я бы сказал, что язык спас наш продукт и позволяет нам использовать все новые захватывающие вещи, происходящие в мире разработки. Если бы мы все еще использовали исключительно Visual C ++ / MFC, то у нас были бы трудности с набором разработчиков и были бы гораздо более ограничены в выборе COTS, чем мы используем .Net.

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

Мы используем Visual Assist X для поддержки рефакторинга (приемлемо), MbUnit / Gallio для модульного тестирования управляемых классов и NMock или RhinoMocks для наши насмешливые рамки.

В целом, я бы сказал, что язык спас наш продукт и позволяет нам использовать все новые захватывающие вещи, происходящие в мире разработки. Если бы мы все еще использовали исключительно Visual C ++ / MFC, то у нас были бы трудности с набором разработчиков и были бы гораздо более ограничены в выборе COTS, чем мы используем .Net.

Мы используем Visual Assist X для поддержки рефакторинга (приемлемо), MbUnit / Gallio для модульного тестирования управляемых классов и NMock или RhinoMocks для нашей среды моделирования.

В целом, я бы сказал, что язык спас наш продукт и позволяет нам использовать все новые захватывающие вещи, происходящие в мире разработки. Если бы мы все еще использовали исключительно Visual C ++ / MFC, то у нас были бы трудности с набором разработчиков и были бы гораздо более ограничены в выборе COTS, чем мы используем .Net.

Мы используем Visual Assist X для поддержки рефакторинга (приемлемо), MbUnit / Gallio для модульного тестирования управляемых классов и NMock или RhinoMocks для нашей среды моделирования.

В целом, я бы сказал, что язык спас наш продукт и позволяет нам использовать все новые захватывающие вещи, происходящие в мире разработки. Если бы мы все еще использовали исключительно Visual C ++ / MFC, то у нас были бы трудности с набором разработчиков и были бы гораздо более ограничены в выборе COTS, чем мы используем .Net.

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

C++ / CLI был превосходно прост для обеспечения CLR в FreeSWITCH. Намного легче, чем контакт с хостингом API или Моно использованием.

В прошлый раз, прежде чем это, я использовал управляемый С++, было в 2003 или около этого. Я помню это являющийся своего рода болью и не работающий как беспрепятственно.

3
ответ дан 5 December 2019 в 08:26
поделиться
Другие вопросы по тегам:

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