我阅读了许多关于非空的问题和答案。在C# (4.0)中最接近非空类型的方法似乎是Jon Skeet的NonNullable<>技巧。
然而,似乎C++/CLI通过支持托管引用:Foo%
(而不是本地C++Foo&
)已经解决了大部分问题。编译器通过向参数添加modreq(IsImplicitlyDereferenced)
来使其发挥作用。尝试从C#调用此类函数会导致:
'<FunctionName>' is not supported by the language
有没有比NonNullable<>更好的东西?
有没有一种(合理的,即不使用反射的)方法可以从C#中调用C++/CLI方法Foo::Method(Bar%)
?
[编辑] 看来目前没有比NonNullable<>更好的了……我希望我能在C++/CLI问题上得到一些评论,因为它已经至少有部分解决方案了。