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ć?


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” .


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.