Podstawowe konstruktory nie są już kompilowane w VS2015

98

Do dziś mogłem korzystać z podstawowych konstruktorów, takich jak:

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

Aby móc to zrobić, w poprzednim Visual Studio CTP musiałem dodać to do pliku csproj:

<LangVersion>Experimental</LangVersion>

W każdym razie nie działa to już w wersji zapoznawczej programu Visual Studio 2015 (z lub bez LangVersion). Czy ktoś ma jakieś pomysły na temat tego, co może się dziać?

Matko
źródło
6
Mówią o usunięciu go tutaj
Jonesopolis
15
Czy tylko ja uważam, że ta funkcja jest bezcelowa? Nigdy nie znalazłem z tego rzeczywistej korzyści.
TyCobb
2
To było trochę niezręczne, ale podoba mi się filozofia, która za tym stoi!
Matko
14
Jaka szkoda. Ale możesz swobodnie używać konstruktorów głównych po przejściu do F #. Przejdź do F #, csharpers, twoje nowe funkcje językowe już tam są;)
scrwtp
3
@TyCobb, podstawowe konstruktory są absolutnie niezbędne w przypadku iniekcji zależności: można użyć iniekcji konstruktora (w przeciwieństwie do wstrzyknięcia właściwości) bez powtarzania nazwy (i typu) każdej zależności cztery razy.
Fyodor Soikin

Odpowiedzi:

143

Czy ktoś ma jakieś pomysły na temat tego, co może się dziać?

Tak - główne konstruktory zostały usunięte z planów dla C # 6. Mogą one równie dobrze pojawić się w jakiejś formie w późniejszej wersji, ale nie są już w C # 6.

Więcej informacji można znaleźć w poście zespołu „Zmiany w zestawie funkcji językowych” .

Jon Skeet
źródło
To naprawdę smutne! Wydawały się całkiem przydatne.
Per Lundberg
@PerLundberg: Nie ma ich też w C # 7. Podejrzewam, że zespół projektowy C # ponownie zajmie się typami rekordów w C # 8, ale to nie znaczy, że na pewno tam dotrą.
Jon Skeet
Miejmy nadzieję, że wszystko będzie dobrze. :) Widziałem je wspomniane w jakimś poście w C # tak, i wyglądało to na kolejny interesujący sposób na rozwiązanie problemu „prostej klasy”.
Per Lundberg,