来自C#背景,我正在尝试将一个类的实例分配给F#中另一个类的实例,但是我收到错误'Type Initialisation Exception'
我的代码是
//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”的异常。
有什么想法吗?感谢
答案 0 :(得分:2)
感谢费奥多尔和卡斯滕,我想通了。
let mutable private OpenD : bool[] = Array.zeroCreate<bool> ccpDataSet.D.Length
由于我是F#的新手,它的行为与C#不同,我试图将OpenD的长度设置为空实例。将其更改为0并且有效:)