[英]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.