相关疑难解决方法(0)

在F#中测试空引用

鉴于以下内容:

[<DataContract>]
type TweetUser = {
    [<field:DataMember(Name="followers_count")>] Followers:int
    [<field:DataMember(Name="screen_name")>] Name:string
    [<field:DataMember(Name="id_str")>] Id:int
    [<field:DataMember(Name="location")>] Location:string}

[<DataContract>]
type Tweet = {
    [<field:DataMember(Name="id_str")>] Id:string
    [<field:DataMember(Name="text")>] Text:string
    [<field:DataMember(Name="retweeted")>] IsRetweeted:bool
    [<field:DataMember(Name="created_at")>] DateStr:string
    [<field:DataMember(Name="user", IsRequired=false)>] User:TweetUser
    [<field:DataMember(Name="sender", IsRequired=false)>] Sender:TweetUser
    [<field:DataMember(Name="source")>] Source:string}
Run Code Online (Sandbox Code Playgroud)

反序列化DataContractJsonSerializer(typeof<Tweet[]>)将导致User或Sender字段为空(至少是调试器告诉我的那个).

如果我尝试写下面的内容:

    let name = if tweet.User <> null 
                  then tweet.User.Name
                  else tweet.Sender.Name
Run Code Online (Sandbox Code Playgroud)

编译器发出错误:"类型'TweetUser'没有'null'作为正确的值"

在这种情况下如何测试空值?

f#

13
推荐指数
2
解决办法
4226
查看次数

标签 统计

f# ×1