Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

已关闭6年。



Improve this question




在2015年,C#中可能有任何“官方”的monad吗?理想情况下,它可以使用ala Scala的Option,Some和None类型。

C#似乎具有所需的一切,即co/contravariance和lambda。

我之所以这样问,是因为我最近开始在一家使用Unity的公司工作,并且遇到了很多延迟的初始化工作。为了避免NullPointerException,我想邀请他们进入monad世界。关于这一点有什么想法,还是我们应该简单地以其他方式处理?

最佳答案

就“官方”方法而言,请记住,如果您使用的是C#6,则可以使用null-conditional operator:

var myVal = possiblyNull?.thisToo?.andThis?.value;

某些VisualStudio模板(例如ASP.NET MVC项目模板)还包括 IsNotNull extension method,它是AjaxMinExtensions的一部分。如果您的项目中没有这些,则可以将实现复制/粘贴到代码中。
var myVal = possiblyNull.IfNotNull(v => v.doTheThing())
                        .IfNotNull(theThing => theThing.TheProperty);

关于c# - C#中的Maybe/Option Monad(已关闭),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29126651/

10-14 11:50