如何在C#中接近不可为空的引用类型?

Ðаn*_*Ðаn 22 .net c# c++-cli non-nullable

我读过很多不可空的问题和答案.看起来在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的内容有所了解,因为它至少已经有了部分解决方案.

Nic*_*ver 11

我已经碰到了几次......我还没有找到比Skeet解决方案更好的东西.它解决了我遇到的所有情况,所以我必须投票.

我同意这是一个有点hacky的情况,我们不得不诉诸...但他的修复确实解决了问题.

  • @Russell - 他问是否有更好的解决方案......经过大量搜索我从未找到过.如果我要花很多时间看,那就是我从一开始就想要的答案.这是对他的一部分问题的回应:"还有什么比NonNullable <>更好吗?" (6认同)