代码之家  ›  专栏  ›  技术社区  ›  Ðаn

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

  •  22
  • Ðаn  · 技术社区  · 15 年前

    我读过很多 non-nullable 问题和答案。在C(4.0)中,接近不可为空的类型的最佳方法是jon skeet的 NonNullable<> 乱劈。

    然而,C++/CLI似乎通过支持管理引用解决了大部分问题: Foo% (代替本机C++) Foo& )。编译器通过添加 modreq(IsImplicitlyDereferenced) 为了争论。试图从C调用这样的函数会导致:

    '<FunctionName>' is not supported by the language
    

    那还有更好的吗 不可空<gt; ?

    有没有方法(合理地说,即,使用反射的W/O)调用C++/CLI方法 Foo::Method(Bar%) 从C?


    [编辑] 目前似乎没有什么比 不可空<gt; 我希望我能得到一些关于C++/CLI的评论,因为它至少已经有了部分解决方案。

    2 回复  |  直到 8 年前
        1
  •  11
  •   Nick Craver    15 年前

    我已经碰到过几次了……我还没有找到比双向飞碟更好的解决方案。它解决了我遇到的所有案件,所以我必须投我的票。

    我同意这是一个有点骇人听闻的情况,我们不得不求助于……但他的解决办法确实解决了问题。

        2
  •  1
  •   Noon Silk    14 年前

    是的,规格: http://research.microsoft.com/en-us/projects/specsharp/

    --编辑:我刚注意到你说C 4.0;我很肯定规范不支持那个版本。不过,值得一看。

    您还可以(我认为)在稍晚的阶段进行检查,然后通过gendarme中的规则进行编译: http://www.mono-project.com/Gendarme (假设为4.0)