繁体   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