F #을 사용하여 C# 어셈블리에 정의 된 구조체 유형의 public readonly
멤버를 읽는 데 이상한 오류가 발생합니다.외부 어셈블리에서 구조체의 공용 읽기 전용 멤버에 액세스
"The address of the variable 'copyOfStruct' may not be used at this point"
웹이이 글을 쓰는 시점의 같은 useless이다 : 나는 F # 1.9.6.16로 client.exe가를 컴파일 할 때
// 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
는, 마지막 줄은 오류를 제공합니다. 클래스의 불변 멤버를 읽을 수 있고 struct의 변경 가능한 멤버를 읽을 수 있지만 구조체의 변경 불가능한 멤버를 읽을 수 없다는 것은 이상한 것처럼 보입니다. 해결 방법은 충분히 쉽지만 궁금합니다. 컴파일러의 버그입니까?
편집 : 나는 사람들이 코드는 '내가 모르는'입니다 '는 컴파일러의 버그처럼 보이는'말할 때 일반적으로
ㅎ, 이제 쓸모없는 링크가 만들어지고 무한 루프가 발생합니다. – MichaelGG