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世界。关于这一点有什么想法,还是我们应该简单地以其他方式处理?
某些VisualStudio模板(例如ASP.NET MVC项目模板)还包括
想要改善这个问题吗?更新问题,以便将其作为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