Ich erhalte einen merkwürdigen Fehler, wenn ich F # verwende, um ein public readonly
Mitglied eines Strukturtyps zu lesen, der in einer C# -Assembly definiert ist.Zugriff auf öffentliche readonly-Member von Strukturen in externen Assemblies
// 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
Wenn ich Client.exe mit F # 1.9.6.16, die letzte Zeile gibt den Fehler kompilieren:
"The address of the variable 'copyOfStruct' may not be used at this point"
Das Web ist useless ab dem Zeitpunkt des Schreibens dieses Artikels. Es scheint merkwürdig, dass man ein unveränderliches Mitglied einer Klasse lesen kann, und man kann ein veränderliches Mitglied einer Struktur lesen, aber man kann kein unveränderliches Mitglied einer Struktur lesen. Ein Workaround ist einfach genug, aber ich bin neugierig: Ist das ein Fehler im Compiler?
Edit: Ich legte einen Fehlerbericht
Heh, jetzt erstellt Ihre nutzlose Verbindung und Endlosschleife, da dies das einzige Ergebnis ist. – MichaelGG