【发布时间】:2016-06-24 04:51:16
【问题描述】:
来自 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()
以下sn-ps 都是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"' 的异常。
有什么想法吗?谢谢
【问题讨论】:
-
那个错误是在哪里抛出的?你能提供一个最小但完整的例子来说明这个问题吗? - 我想我不必告诉你这是非常反惯用的 F#
-
InnerException是什么? -
内部异常是 {System.NullReferenceException: 对象引用未设置为对象的实例。在
.$Optimiser..cctor() 在 D:\CCP\Optimiser.fs:line 19} -
第 19 行让可变私有 OpenD : bool[] = Array.zeroCreate
ccpDataSet.D.Length -
@user4633919 这很好,但你应该帮自己一个忙:请不要试图照原样复制 C# 代码——你会非常失望——而是学习 FP,然后你会失望C# ;)
标签: c# .net visual-studio oop f#