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.