2016-05-13 14 views
3

Aus welchem ​​Grund auch immer, der initialisierte Wert einer value struct definiert in Windows Runtime Component wird in der App (C#) ignoriert.Wert Struktur nicht initialisiert in WinRT

CX/C++:

namespace RuntimeComponent1 
{ 
    public value struct Foo { 
     bool flag1 = true; 
     bool flag2 = false; 
    }; 
} 

C#

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 

     var settings = new RuntimeComponent1.Foo(); 
     Debug.WriteLine(settings.flag1); // Output: False 
     Debug.WriteLine(settings.flag2); // Output: False 
    } 
} 

Beachten Sie, dass flag1True sein sollte, sondern es ist False. Warum? !


Edit: Wie @HansPassant vorgeschlagen, erstellen Sie ein Ticket für diese: https://connect.microsoft.com/VisualStudio/feedback/details/2702659 Wenn Sie auch denken, das ist ein Problem. Bitte helfen Sie mit, es zu wählen.

+3

Nicht alle Sprachen unterstützen Konstruktoren für Werttypen (z. B. JS). Daher unterstützt WinRT keine Konstruktoren für Werttypen. (Genauer gesagt, Konstruktoren für Werttypen werden nicht projiziert.) –

+0

@RaymondChen Art von Sinn. Ich denke, ich ärgere mich über diese Tatsache, dass es keine Warnungen/Fehler gibt als die Tatsache, dass es nicht unterstützt wird. –

+0

Fühlen Sie sich besser, indem Sie dies unter connect.microsoft.com melden. –

Antwort

1

Ich habe eine E-Mail-Updates von Microsoft VC++ Team bekam nach der Ausgabe auf Microsoft Posting verbinden https://connect.microsoft.com/VisualStudio/feedback/details/2702659

Danke dieses Problem gemeldet hat. Die nächste Version des Visual C++ - Compiler-Toolsets gibt einen Fehler aus, wenn ein Mitglied einer Wertklasse einen Standard-Member-Initialisierer hat.