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?


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.