Lop*_*per 9 c# c++-cli declaration
托管C++/CLI与C#相比有什么主要优势吗?绝对不是我想的语法,因为C++/CLI中的以下代码真的很难看,
C++/CLI代码:
[Out]List<SomeObject^>^% someVariable
Run Code Online (Sandbox Code Playgroud)
比较上面的C#代码:
out List<SomeObject> someVariable
Run Code Online (Sandbox Code Playgroud)
出于好奇,与上面相比,C++/CLI中的语法更加丑陋.
小智 12
与本机C++代码更容易的互操作是一个优势.
它是否具有主要优势是主观的.
除非你想与现有的原生C++代码混合使用,否则你可能会更好地使用C#.
我可以想到使用C++/CLI的3个主要原因:
能够直接使用本机头文件是一个巨大的优势,但不是唯一的.
堆栈语义比C#为IDisposable管理提供的任何东西都要好得多.C++/CLI有一个统一的语法,用于正确管理变量IDisposable和不变量,包括局部变量和成员字段.比较:
ref class MyClass
{
FileStream fs;
}
Run Code Online (Sandbox Code Playgroud)
VS
class MyClass : IDisposable
{
FileStream fs;
void IDisposable.Dispose() { Dispose(true); }
~MyClass() { Dispose(false); }
public virtual void Dispose(bool disposing) { if (disposing) fs.Dispose(); }
}
Run Code Online (Sandbox Code Playgroud)
现在哪种语言看起来很难看?
再就是模板interior_ptr,#define,原生的DLL导出,指针到成员,以及其他可能几件事我忘了.