我正在尝试与操作系统以及诸如活动目录和Ocropus之类的东西进行集成。
我掌握了许多编程语言,包括标题中列出的语言。 我正在努力学习C++/CLI的工作原理,但是无法从我所做的搜索中找到简明、准确的描述。 所以我在这里问。
您能告诉我C++/CLI的缺陷和特点吗? 假设我已经掌握了所有的C#,然后再开始。 我不是C++的专家,因此我的一些问题的答案可能是“就像C ++”,但可以说我是在C#方面。 我想知道以下内容:
- 将C ++指针转换为CLI指针,
- C# / C ++传递值/双重间接指针/ CLI指针是否有任何区别,以及推荐使用哪种方式。
- gcnew、__gc、__nogc与
- 多态
- 结构体
- 内部类
- 接口
- “fixed”关键字;是否存在?
- 是否可以使用C++/CLI编译加载到内核中的DLL? 作为设备驱动程序加载? 被内核调用? 这到底意味着什么(即如何将某些内容加载到内核中; 如何知道它是否存在?)
- L"my string"与"my string"? wchar_t? 有多少种字符类型?
- 在代码中,我们可以将chars视为uint32s吗? 或者应该将它们视为什么以保证语言无关性?
- C#中不建议使用终结器(~ClassName() {}),因为不能保证它们会以确定性的方式运行,但由于在C++中我必须使用“delete”或使用副本构造函数以堆栈分配内存,因此在C# / C++交互之间推荐什么?
- 在C++/CLI中使用反射时需要注意什么?
- C++/CLI与IDisposable模式以及SafeHandle、SafeHandleZeroOrMinusOneIsInvalid的兼容性如何?
- 在执行DMA操作时,异步异常是什么?
- 在使用C++与CLI集成时,是否会对自己施加限制,而不仅仅是使用纯C++?
- C++中的属性是否类似于C#中的属性?
- 现在可以通过模板使用完整的元编程模式,并且仍然像普通的C++一样进行编译吗?
- 您是否尝试过使用boost编写C++/CLI?
- 接口boost库与C++/CLI的最佳方法是什么? 您能否举一个将lambda表达式传递给iterator / foldr函数的示例?
- 异常处理的首选方式是什么? C++/CLI现在是否可以捕获托管异常?
- C++/CLI的动态IL生成效果如何?
- 它是否在Mono上运行?
- 还有其他需要了解的事情吗?
注意: 我真正询问的是C++/CLI的特殊之处,以及它的陷阱。