Konstruktor utama tidak lagi mengkompilasi di VS2015

98

Hingga saat ini, saya dapat menggunakan konstruktor utama, seperti:

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

Untuk dapat melakukan ini, di Visual Studio CTP sebelumnya, saya harus menambahkan ini ke file csproj:

<LangVersion>Experimental</LangVersion>

Bagaimanapun, ini tidak lagi berfungsi di Visual Studio 2015 Preview (dengan atau tanpa LangVersion). Adakah yang punya ide tentang apa yang sedang terjadi?

Matko
sumber
6
Mereka berbicara tentang menghapusnya di sini
Jonesopolis
15
Apakah saya satu-satunya yang mengira fitur ini tidak berguna? Saya tidak pernah menemukan manfaat sebenarnya untuk itu.
TyCobb
2
Rasanya agak canggung, tapi saya suka filosofi di baliknya!
Matko
14
Itu memalukan. Tetapi Anda dapat menggunakan konstruktor utama secara bebas setelah Anda pindah ke F #. Pindah ke F #, csharpers, fitur bahasa baru Anda sudah ada;)
scrwtp
3
@TyCobb, konstruktor utama sangat penting dengan injeksi ketergantungan: Anda dapat menggunakan injeksi konstruktor (bukan injeksi properti) tanpa mengulangi nama (dan jenis) setiap ketergantungan empat kali.
Fyodor Soikin

Jawaban:

143

Adakah yang punya ide tentang apa yang sedang terjadi?

Yup - konstruktor utama telah dihapus dari rencana untuk C # 6. Mereka mungkin akan muncul dalam beberapa bentuk di versi yang lebih baru, tetapi mereka tidak ada di C # 6 lagi.

Lihat postingan "Perubahan pada kumpulan fitur bahasa" dari tim untuk detail lebih lanjut.

Jon Skeet
sumber
Sangat menyedihkan! Sepertinya cukup berguna.
Per Lundberg
@ PerLundberg: Mereka juga tidak ada di C # 7. Saya menduga tim desain C # akan meninjau kembali jenis rekaman di C # 8, tetapi itu tidak berarti mereka pasti akan berhasil di sana.
Jon Skeet
Mari kita berharap untuk yang terbaik. :) Saya melihat mereka disebutkan dalam beberapa C # posting ya, dan sepertinya cara lain yang menarik untuk mencoba dan memecahkan masalah "kelas sederhana".
Per Lundberg