[英]Using F# Option Type in C#
我有以下类型:
and ListInfo() =
let mutable count = 0
// This is a mutable option because we can't have an infinite data structure.
let mutable lInfo : Option<ListInfo> = None
let dInfo = new DictInfo()
let bInfo = new BaseInfo()
member this.BaseInfo = bInfo
member this.DictInfo = dInfo
member this.LInfo
with get() = lInfo
and set(value) = lInfo <- Some(value)
member this.Count
with get() = count
and set(value) = count <- value
递归“列表信息”是一个选项。 有一个或没有。 我需要从C#中使用它,但我得到错误。 这是一个示例用法:
if (FSharpOption<Types.ListInfo>.get_IsSome(listInfo.LInfo))
{
Types.ListInfo subListInfo = listInfo.LInfo.Value;
HandleListInfo(subListInfo, n);
}
这里listInfo的类型是ListInfo,如上所示。 我只是想检查它是否包含值,如果是,我想使用它。 但是所有访问listInfo.LInfo都会给出错误“语言不支持属性,索引器或事件listInfo.LInfo ......”
谁知道为什么?
我怀疑问题是LInfo
属性getter / setter使用不同类型(C#中不支持)。
尝试这个
member this.LInfo
with get() = lInfo
and set value = lInfo <- value
或这个
member this.LInfo
with get() = match lInfo with Some x -> x | None -> Unchecked.defaultof<_>
and set value = lInfo <- Some value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.