我读过很多不可空的问题和答案.看起来在C#(4.0)中接近不可空类型的最佳方法是Jon Skeet的NonNullable <> hack.
但是,似乎C++/CLI通过支持托管引用解决了大部分问题:( Foo%
而不是本机C++ Foo&
).编译器通过添加modreq(IsImplicitlyDereferenced)
参数来完成此工作.试图从C#调用这样的函数会导致:
'<FunctionName>' is not supported by the language
Run Code Online (Sandbox Code Playgroud)
有没有比NonNullable <>更好的东西?
有没有办法(合理地 - 即,没有使用反射)Foo::Method(Bar%)
从C#调用C++/CLI方法?
[编辑]似乎目前没有比NonNullable <>更好的了......我希望我能对C++/CLI的内容有所了解,因为它至少已经有了部分解决方案.
托管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中的语法更加丑陋.
我没有看到任何真正的优势,除了你有一个C++语法,以及它,像指针和析构函数.