2009-09-02 15 views
6

C# derlemesinde tanımlanan bir yapı türünün public readonly üyesini okumak için F # kullandığımda tuhaf bir hata alıyorum.Dış derlemelerdeki yapıların genel salt okunur üyelerine erişim

"The address of the variable 'copyOfStruct' may not be used at this point" 

Web Bu yazının hazırlandığı zaman itibariyle useless: Ben F # 1.9.6.16 ile Client.exe derlerken

// 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 

, son satırı hata veriyor. Bir sınıfın değişmez bir üyesini okuyabildiği ve bir yapının değişmez bir üyesini okuyabileceği garip görünüyor, ama bir yapının değişmez bir üyesini okuyamaz. Bir geçici çözüm yeterince kolay, ama merak ediyorum: Bu derleyicide bir hata mı?

Düzenleme: İnsanların kodu 'Ben bilmiyorum' içindir 'o derleyicisi hata benziyor' deyince Normalde

+0

Heh, artık işe yaramaz bağlantınız ve sonsuz döngü oluşturuyor çünkü bu sadece bir sonuç. – MichaelGG

cevap

3

[email protected] bir hata raporu ibraz yapıyorum'. Ancak bu durumda, bir böcek gibi görünmektedir.

F # derleyici, mutasyon geçirmeleri durumunda sahnelerin arkasındaki yapıların bir kopyasını oluşturur. (Bu nedenle, değiştirilebilen alanlara sahip bir yapı tanımlasanız bile, alanlarını güncelleyebilmek için söz konusu yapının örneğini değiştirilebilmesi gerekir.) Sahne arkasındaki özel büyü, 'salt okunur' yapı alanlarını unutur. İnternet ve StackOverflow F # sorunlarını lı yaklaşık yardım istemek için harika bir yer olmakla birlikte

, F # takımı [email protected] e-posta göndererek Bulduğunuz hataları bildirmek lütfen.

+0

Teşekkürler, evet, bir yerde aptalca bir hata yapıyor olsaydım, bu yüzden sorudan emin değildim. Hata raporu gönderildi. – Gabriel

İlgili konular