2010-02-02 38 views
21

我读过non-nullable许多问题和答案。看起来像C#(4.0)中接近非空类型的最好方法是Jon Skeet的NonNullable<>黑客。如何在C#中近距离接近不可空引用类型?

但是,似乎C++/CLI通过支持托管引用:Foo%(而不是本机C++ Foo&)解决了许多问题。编译器通过将modreq(IsImplicitlyDereferenced)添加到参数中来完成此工作。试图从C#导致调用这样的功能:

'<FunctionName>' is not supported by the language 

有没有什么更好的那么非空<>

有什么办法(合理 - 即不使用反射)从C#调用C++/CLI方法Foo::Method(Bar%)


[编辑]似乎有什么目前优于非空<> ...我想我会得到在C++/CLI的东西有些意见,因为它已经至少部分解。

+0

链接已经死了。新的链接:http://codeblog.jonskeet.uk/2008/10/06/non-nullable-reference-types/ – 2016-03-25 10:40:09

+0

修正,谢谢... – 2016-03-25 16:47:35

回答

10

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

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

+1

这感觉更像是一个评论而不是答案。 – Russell 2010-02-02 04:52:23

+6

@Russell - 他问是否有更好的解决方案......经过大量搜索,我从未找到过。如果我要花很多时间看,这是我从一开始就想要的答案。这是对他的部分问题的回应:“有没有更好的NonNullable <>?” – 2010-02-02 04:55:57