在 C# 里使用 F# 的 option 变量

在使用 C# 与 F# 混合编程的时候(通常是使用 C# 实现 GUI,F#负责数据处理),经常会遇到要判断一个 option 是 None 还是 Some。虽然 Option module 里有 isSome 这样的函数,但还是不够方便。偶然在墙外看到一个解决方法

[<System.Runtime.CompilerServices.Extension>]
module Methods =

   [<System.Runtime.CompilerServices.Extension>]
   let Exists(opt : ‘a option) =
                match opt with
                | Some _ -> true
                | None -> false

一般是把函数放在需要的引入的那个 module 里,这样就不用单独引用一个 module 了。不过这也取决于怎么组织项目。

然后就可以在 C# 里这样用了:

if (aOptionVariable.Exists()) 
{
   ...
}

记得使用前 using 上面那个 module

posted @ 2016-07-15 16:18  福柯  阅读(779)  评论(0编辑  收藏  举报