财产没有显示价值

时间:2015-03-04 14:58:04

标签: f#

我在类中定义了一个属性:

type Customer() =
    let mutable _lastName = String.Empty
    member val LastName = _lastName with get

在方法QueryData中,我为_lastName:

赋值
member self.QueryData () =

            // CODE
            let addressData = bp.GetStructure("PE_PERSONALDATA")
            _lastName <- addressData.GetString("LASTNAME")
            null
        | RfcCommunication ex ->
            let basedComm = ex :> Exception
            basedComm
        | RfcLogon ex ->
            let basedLogon = ex :> Exception
            basedLogon
        | RfcAbapRuntime ex ->
            let basedAbap = ex :> Exception
            basedAbap

在main函数中,我创建了一个Customer()实例并读取LastName属性:

[<EntryPoint>]
let main argv = 

    let customer = CustomerBapi.Customer()
    let ex = customer.QueryData()

    if ex <> null then printfn "%s" ex.Message
    printfn "%s" customer.LastName

结果是空字符串。我试图调试程序,看到_lastName不为空

enter image description here

为什么LastName属性为空?

1 个答案:

答案 0 :(得分:5)

您的财产应如下所示:

member this.LastName with get () = _lastName

您正在使用的属性类型是将_lastName作为值传递给初始化


来自MSDN的解释:

  

保存属性数据的私有值称为后备   商店。要让编译器自动创建后备存储,   使用关键字成员val,省略自我标识符,然后提供   表达式初始化属性。如果属性是   可变,包括get,set。例如,以下类类型   包括两个自动实现的属性。 Property1是   只读并初始化为提供给主数据库的参数   构造函数,Property2是一个初始化为的可设置属性   空字符串:

type MyClass(property1 : int) =
    member val Property1 = property1
    member val Property2 = "" with get, set