我已经阅读了许多不可为空的问题和答案。看起来在 C# (4.0) 中接近不可为空类型的最佳方法是 Jon Skeet 的NonNullable<> hack。
但是,似乎 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 的评论,因为它至少已经有了部分解决方案。