I costruttori primari non vengono più compilati in VS2015


98

Fino ad oggi, potevo fare uso di costruttori primari, come:

public class Test(string text)
{
    private string mText = text;
}

Per poterlo fare, nel precedente CTP di Visual Studio, ho dovuto aggiungerlo al file csproj:

<LangVersion>Experimental</LangVersion>

Comunque, questo non funziona più nell'anteprima di Visual Studio 2015 (con o senza LangVersion). Qualcuno ha qualche idea su cosa potrebbe succedere?


6
Parlano di rimuoverlo qui
Jonesopolis

15
Sono l'unico che ha pensato che questa funzione fosse inutile? Non ho mai trovato l'effettivo vantaggio per questo.
TyCobb

2
Sembrava un po 'imbarazzante, ma mi piace la filosofia alla base!
Matko

14
È un peccato. Ma puoi usare i costruttori primari liberamente una volta che ti sposti in F #. Passa a F #, csharpers, le nuove funzionalità della lingua sono già presenti;)
scrwtp

3
@TyCobb, i costruttori primari sono assolutamente essenziali con l'inserimento delle dipendenze: puoi usare l'iniezione dei costruttori (al contrario dell'iniezione di proprietà) senza ripetere il nome (e il tipo) di ogni dipendenza quattro volte.
Fyodor Soikin

Risposte:


143

Qualcuno ha qualche idea su cosa potrebbe succedere?

Sì, i costruttori primari sono stati rimossi dai piani per C # 6. Potrebbero apparire in qualche forma in una versione successiva, ma non sono più in C # 6.

Per ulteriori dettagli, vedere il post "Modifiche al set di funzionalità della lingua" del team.


È davvero triste! Sembravano piuttosto utili.
Per Lundberg il

@ PerLundberg: non sono neanche in C # 7. Sospetto che il team di progettazione C # rivisiterà i tipi di record in C # 8, ma ciò non significa che ce la faranno sicuramente.
Jon Skeet

Speriamo per il meglio. :) Li ho visti menzionati in alcuni messaggi C # di sì, e sembrava un altro modo interessante per provare a risolvere il problema della "classe semplice".
Per Lundberg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.