F# 中的记录实例在 C# 中为空
Record instance in F# is null in C#
我正在为学校完成一项作业,其中我们使用 monogame 制作一个小游戏,并增加了使用 F# 工作的挑战。游戏逻辑是完全不可变的 F#,入口点在 C# 中,使用 monogame 中的游戏 class。然而,我遇到了一个关于 F# 中记录类型的奇怪问题。在逻辑 (F#) 中,我有一些类似的东西:
...
module Vectors =
type Vector = {
x : double
y : double
}
let Zero : Vector = {x=0.0; y=0.0}
...
在 C# 中,我有一些访问零的代码:
...
player.vector = Vectors.Zero;
...
奇怪的是,当我现在尝试使用 player.vector 时,它显示为空。调试时 Vector.Zero 也为空。我四处寻找了一些解决方案,可能是一些微不足道的错误,但我似乎找不到。
当您将 F# 项目构建为 exe,但将其用作库时,有时不会调用某些初始化代码。
这可以通过将项目更改为构建为库来解决。
已解决 - F# 项目正在构建为控制台应用程序。
将其更改为 class 库解决了问题。
谢谢@JohnPalmer
我正在为学校完成一项作业,其中我们使用 monogame 制作一个小游戏,并增加了使用 F# 工作的挑战。游戏逻辑是完全不可变的 F#,入口点在 C# 中,使用 monogame 中的游戏 class。然而,我遇到了一个关于 F# 中记录类型的奇怪问题。在逻辑 (F#) 中,我有一些类似的东西:
...
module Vectors =
type Vector = {
x : double
y : double
}
let Zero : Vector = {x=0.0; y=0.0}
...
在 C# 中,我有一些访问零的代码:
...
player.vector = Vectors.Zero;
...
奇怪的是,当我现在尝试使用 player.vector 时,它显示为空。调试时 Vector.Zero 也为空。我四处寻找了一些解决方案,可能是一些微不足道的错误,但我似乎找不到。
当您将 F# 项目构建为 exe,但将其用作库时,有时不会调用某些初始化代码。
这可以通过将项目更改为构建为库来解决。
已解决 - F# 项目正在构建为控制台应用程序。 将其更改为 class 库解决了问题。
谢谢@JohnPalmer