2017-11-16 4 views
7

私はモノゲームを使用して小さなゲームを作成する学校の課題に取り組んでおり、F#で作業するという課題が追加されています。ゲームロジックは完全に不変のF#であり、エントリポイントはMonogameのGameクラスの使用によってC#にあります。しかし、私はF#のレコードタイプに関する奇妙な問題に出くわしました。ロジック(F番号)で、私はの線に沿って何かありますF#のレコードインスタンスがC#でnullになっています

... 
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もnullです。私はいくつかの解決策を見てきましたが、それは些細な間違いかもしれませんが、私はそれを見つけることができません。

+1

「位置」?あなたのコードでは、モジュールの名前は 'Vectors'です。 –

+0

投稿にはごめんなさい。 Vectors.Zeroはnullです – Dfctps

+0

失敗したときにスタックトレースを取得していますか?その特定の行で失敗しますか? – rene

答えて

11

exeとしてF#プロジェクトを作成してライブラリとして使用すると、初期化コードが呼び出されないことがあります。

これは、ライブラリとしてビルドするプロジェクトを変更することで修正できます。

3

解決済み - F#プロジェクトがコンソールアプリケーションとして構築されていました。 これをクラスライブラリに変更することで問題は解決しました。

ありがとう@JohnPalmer

関連する問題