F#を使用してC#アセンブリで定義された構造体タイプのpublic readonly
メンバを読み込むと、異常なエラーが発生します。外部アセンブリ内の構造体のpublic readonlyメンバーへのアクセス
// C#: compile to Lib.dll
namespace Lib
{
public class MyClass { public readonly int ReadonlyFoo; }
public struct MyStruct
{
public readonly int ReadonlyFoo;
public int WriteableFoo;
}
}
// F#: compile to Client.exe
open Lib
let myClass = new MyClass()
printfn "MyClass.ReadonlyFoo = %x" myClass.ReadonlyFoo
let myStruct = new MyStruct()
printfn "MyStruct.WriteableFoo = %x" myStruct.WriteableFoo
printfn "MyStruct.ReadonlyFoo = %x" myStruct.ReadonlyFoo
私はF#1.9.6.16でCLIENT.EXEをコンパイルすると、最後の行はエラーを与える:
"The address of the variable 'copyOfStruct' may not be used at this point"
ウェブは、この記事の執筆時点のようuselessです。クラスの不変なメンバを読むことができ、structの可変メンバを読むことができますが、structの不変なメンバを読むことはできません。回避策は簡単ですが、私は不思議です:これはコンパイラのバグですか?
編集:私は、人々は「私は私が何かわからない」のコードである「それはコンパイラのバグのように見える」と言ったときに通常
これは唯一の結果だから、あなたの役に立たないリンクが作成され、無限ループになりました。 – MichaelGG