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