3

value struct无论出于何种原因,在应用程序 (C#) 中都会忽略 Windows 运行时组件中定义的初始化值。

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

请注意,flag1应该是True但它是False。为什么?!


编辑:按照@HansPassant 的建议,为此创建一张票:https ://connect.microsoft.com/VisualStudio/feedback/details/2702659 如果您也认为这是一个问题。请帮忙投票。

4

1 回答 1

1

在 Microsoft connect https://connect.microsoft.com/VisualStudio/feedback/details/2702659上发布问题后,我收到了来自 Microsoft VC++ 团队的电子邮件更新

感谢您报告此问题。当值类的成员具有默认成员初始值设定项时,Visual C++ 编译器工具集的下一版本将发出错误。

于 2016-08-10T13:11:31.113 回答