Viene visualizzato un errore strano quando utilizzo F # per leggere un membro public readonly
di un tipo di struttura definito in un assembly C#.Accesso ai membri di sola lettura di strutture in assembly esterni
// 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
Quando compilo Client.exe con F # 1.9.6.16, l'ultima riga dà l'errore:
"The address of the variable 'copyOfStruct' may not be used at this point"
Il web è useless a partire dal momento in cui scriviamo. Sembra strano che si possa leggere un membro immutabile di una classe, e si può leggere un membro mutevole di una struttura, ma non si può leggere un membro immutabile di una struttura. Una soluzione è abbastanza facile, ma sono curioso: si tratta di un bug nel compilatore?
Edit: ho presentato un bug report per [email protected]
Heh, ora il tuo collegamento inutile crea e loop infinito in quanto questo è l'unico risultato. – MichaelGG