C# WinRT中未初始化值结构
无论出于何种原因,在Windows运行时组件中定义的C# WinRT中未初始化值结构,c#,windows-runtime,c++-cx,windows-8.1-universal,C#,Windows Runtime,C++ Cx,Windows 8.1 Universal,无论出于何种原因,在Windows运行时组件中定义的值结构的初始化值在应用程序(C#)中被忽略 CX/C++: namespace RuntimeComponent1 { public value struct Foo { bool flag1 = true; bool flag2 = false; }; } C# 请注意,flag1应该是True,而不是False。为什么 编辑: 按照@HansPassant的建议,为此创建一张票证: 如果你
值结构的初始化值在应用程序(C#)中被忽略
CX/C++:
namespace RuntimeComponent1
{
public value struct Foo {
bool flag1 = true;
bool flag2 = false;
};
}
C#
请注意,flag1
应该是True
,而不是False
。为什么
编辑:
按照@HansPassant的建议,为此创建一张票证:
如果你也认为这是个问题。请帮我投票 在Microsoft connect上发布问题后,我收到了Microsoft VC++团队的电子邮件更新
感谢您报告此问题。VisualC++编译器工具集的下一个版本将在值类成员具有默认成员初始化器时发出错误。
并非所有语言都支持值类型的构造函数(例如JS)。因此,WinRT不支持值类型的构造函数。(更准确地说,值类型的构造函数不是投影的。)@RaymondChen有点道理。我想我对没有警告/错误的事实比不支持的事实更感到不安。在connect.microsoft.com上报告这一点会让我感觉更好。我同意应该有警告/错误。
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
}
}