今天如何在C#中接近不可为空的引用类型?
我读过很多不可空的问题和答案。 看起来在C#(4.0)中接近不可空类型的最佳方法是Jon Skeet的NonNullable hack。
但是,似乎C ++ / CLI通过支持托管引用解决了大部分问题: Foo%
(而不是本机C ++ Foo&
)。 编译器通过向参数添加modreq(IsImplicitlyDereferenced)
来完成此工作。 试图从C#调用这样的函数会导致:
'' is not supported by the language
有没有比NonNullable 更好的东西?
有没有办法(合理地 – 即,没有使用reflectionFoo::Method(Bar%)
从C#调用C ++ / CLI方法Foo::Method(Bar%)
?
[编辑]似乎目前没有什么比NonNullable 更好…我希望我会对C ++ / CLI的东西有一些评论,因为它已经至少有一个部分解决方案。
我已经碰到了几次……我还没有找到比Skeet解决方案更好的东西。 它解决了我遇到的所有情况,所以我必须投票。
我同意这是一个hacky的情况,我们不得不诉诸…但他的修复确实解决了问题。
是的,规范#: http : //research.microsoft.com/en-us/projects/specsharp/
– 编辑:我刚注意到你说过C#4.0; 我很相信Spec#不支持该版本。 不过,值得回顾一下。
您也可以(我认为)稍后检查,然后通过Gendarme中的规则进行编译: http : //www.mono-project.com/Gendarme (假设运行4.0)
上述就是C#学习教程:今天如何在C#中接近不可为空的引用类型?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/992284.html