C#6结构中的无参数构造函数

我的理解是现在允许结构中的无参数构造函数。

但是下面的代码在VS 2015社区中给出了编译错误

public struct Person { public string Name { get; } public int Age { get; } public Person(string name, int age) { Name = name; Age = age; } public Person() : this("Jane Doe", 37) { } } 

错误:“结构不能包含显式无参数构造函数”

谁知道为什么?

该function出现在较早的C#6.0预览中,这就是为什么有些文章谈论它。 但它随后被移除,因此在VS 2015 RC分发的版本中不存在。

具体而言,在拉取请求#1106中还原了更改,其中包含有关问题#1029的基本原理的更多信息。 引用弗拉基米尔·萨多夫:

随着我们执行越来越多的测试,我们不断发现无参数构造函数在库中甚至在某些版本的CLR中导致不一致行为的情况。

[…]

在重新考虑破坏长期假设所引起的潜在问题后,我们认为最好让我们的用户恢复结构构造函数的要求,使其始终具有forms参数。

我不确定为什么这是允许的:

 public struct Person { public string Name { get; } public int Age { get; } public Person(string name = null, int age = 0) { Name = name; Age = age; } } 

这会解决你的问题吗?