Costruttori senza parametri nelle strutture per C # 6

La mia comprensione è che i costruttori di Parameterless nelle strutture sono ora consentiti.

Ma quanto segue mi dà un errore di compilazione nella Community 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) { } } 

Errore: “Le strutture non possono contenere costruttori senza parametri espliciti”

Qualcuno sa perché?

La funzione era presente nelle anteprime precedenti di C # 6.0, motivo per cui alcuni articoli ne parlano. Ma è stato rimosso e quindi non è presente nella versione distribuita con VS 2015 RC.

Nello specifico, la modifica è stata ripristinata nella richiesta pull # 1106 , con ulteriori informazioni sulla motivazione nel numero 1029 . Citando Vladimir Sadov:

Mentre eseguivamo sempre più test, continuammo a scoprire casi in cui i costruttori di struct senza parametri causavano comportamenti inconsistenti nelle librerie o persino in alcune versioni di CLR.

[…]

Dopo aver riconsiderato i potenziali problemi derivanti dalla rottura di ipotesi di vecchia data, abbiamo deciso che era meglio per i nostri utenti ripristinare il requisito sui costruttori di struct di avere sempre parametri formali.

Non sono sicuro del perché, tuttavia, questo è permesso:

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

Questo risolve il tuo problema?