使用C++/CLI 进行100%托管开发有哪些优点(可能存在的缺点列表)(即使用/ clr:safe编译,"生成...程序集,就像用C#编写的那样") )?尤其是当compard到C#(注意:C++/CLI:在C#中的优势和它有什么优势超过任何标准C++或C#中使用C++/CLI?大多是有关管理/非托管互操作).
例如,这里有几个我的头顶:
C++ - 托管类型的样式引用,不像完整的非可空引用那样优雅,但总比没有好或使用解决方法.
模板比泛型更强大
预处理器(这可能是一个缺点!,但宏可用于代码生成)
引用类型的堆栈语义 - 自动调用IDisposable :: Dispose()
通过C++析构函数更容易实现Dispose()
C#3.0添加了自动实现的属性,因此不再具有C++/CLI优势.
我认为最大的一个优势是托管/非托管互操作.在不使用C#或其他.Net语言的情况下编写纯托管C++/CLI(至少对我而言)似乎完全忽略了这一点.是的,你可以做到这一点,但你为什么要这样做.
如果您要编写纯托管代码,为什么不使用C#.特别是(如nobugs所说)如果VS2010放弃了对C++/CLI的IntelliSense支持.同样在VS2008中,用于C++/CLI的IntelliSense不如C#IntelliSense好; 所以从开发人员的角度来看,在C#中工作/探索/重构比在C++/CLI中更容易.
如果你想要列出一些C++的好处,比如预处理器,堆栈语义和模板,那么为什么不使用C++呢?
奇怪,我喜欢C++/CLI,但你确切地列出了我不喜欢的功能.我的批评:
嗯,这或许都是非常主观的.VS2010将会出现死亡之谜,它将在没有智能感知支持的情况下发布,用于C++/CLI.