Возможность использовать собственные файлы заголовков напрямую - огромное преимущество, но не единственное.
Стеклянные семантики настолько лучше, чем все, что C# может предложить для управления IDisposable
. C++/CLI имеет один единообразный синтаксис для правильного управления переменными, которые являются IDisposable
, и те, которые не являются как локальными переменными, так и полями-членами. Сравнение:
ref class MyClass
{
FileStream fs;
}
против
class MyClass : IDisposable
{
FileStream fs;
void IDisposable.Dispose() { Dispose(true); }
~MyClass() { Dispose(false); }
public virtual void Dispose(bool disposing) { if (disposing) fs.Dispose(); }
}
Теперь, какой язык смотрит некрасиво?
Тогда есть шаблоны, interior_ptr
, #define
, родной экспорт DLL, указатель на член и, возможно, несколько других вещей, которые я забыл.
Я могу добавить, чтобы поддержать это. В предыдущем проекте мне пришлось написать интерфейс между веб-сервисом CMS asmx и промежуточным программным обеспечением IBM, в котором была только библиотека C++ api (а не dll, но статическая библиотека). C++/CLI был единственным выбором для создания этого моста. – softveda
Реализация D .Net находится в работе. Возможно, в ближайшем будущем D может взаимодействовать с .Net. – dsimcha
@dsimcha - это было бы очень круто – philsquared