簡體   English   中英

F#類將一個對象值分配給另一個對象

[英]F# class assign an object value to another object

來自C#背景,我試圖將一個類的實例分配給F#中一個類的另一個實例,但出現錯誤“類型初始化異常”

我的代碼是

//filename is CCPType.fs

module CCPType =

    type CCPClass() = class
        let mutable p = Unchecked.defaultof<int>
        let mutable d = Unchecked.defaultof<int[,]>

        member self.P
            with get () = p
            and set (value) = p <- value

        member self.D
            with get () = d
            and set (value) = d <- value

    end

//filename is Programme.fs

Module Start =

    [<EntryPoint>]
    let main argv = 
        let record = FileParser.ParseTextToCCPRecord(text) // returns CCPClass
        let z = Optimiser.Execute(record) //arg is of type CCPClass

//filename is Optimiser.fs

module Optimiser =

    let mutable ccpDataSet = CCPClass()

以下代碼段都是Optimiser模塊中Optimiser.fs的一部分。 我嘗試了以下

    let Execute record =
        ccpDataSet <- record

而且我也嘗試過

    let Execute(record: CCPClass) =
        ccpDataSet = new CCPClass()
        ccpDataSet.P <- record.P
        ccpDataSet.D <- record.D

而且我也嘗試過

    let Execute(record: CCPClass) =
        ccpDataSet <- new CCPClass()
        ccpDataSet.P <- record.P
        ccpDataSet.D <- record.D

而且我也嘗試過

    let Execute record =
        ccpDataSet.P <- record.P
        ccpDataSet.D <- record.D

並且我嘗試了很多不同的方法,但是我仍然無法將一個實例化的類復制到另一個實例中。

我收到錯誤消息“類型為“ System.TypeInitializationException的未處理的異常””。

'“ ccpDataSet”引發了類型為“ System.TypeInitializationException”“的異常。

有任何想法嗎? 謝謝

感謝Fyodor和Carsten,我弄清楚了。

let mutable private OpenD : bool[] = Array.zeroCreate<bool> ccpDataSet.D.Length

由於我是F#的新手,它的行為不像C#,因此我試圖將OpenD的長度設置為null實例。 將其更改為0,它可以工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM