Các hàm tạo chính không còn được biên dịch trong VS2015


98

Cho đến tận ngày hôm nay, tôi có thể sử dụng các hàm tạo chính, chẳng hạn như:

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

Để có thể thực hiện việc này, trong Visual Studio CTP trước đó, tôi phải thêm cái này vào tệp csproj:

<LangVersion>Experimental</LangVersion>

Nhưng dù sao, điều này không còn hoạt động trong Visual Studio 2015 Preview (có hoặc không LangVersion). Có ai có bất kỳ ý tưởng về những gì có thể xảy ra?


6
Họ nói về việc loại bỏ nó ở đây
Jonesopolis

15
Tôi có phải là người duy nhất nghĩ rằng tính năng này là vô nghĩa? Tôi không bao giờ tìm thấy lợi ích thực sự cho nó.
TyCobb

2
Nó cảm thấy hơi khó xử, nhưng tôi thích triết lý đằng sau nó!
Matko

14
Thật là sự xấu hổ. Nhưng bạn có thể sử dụng các hàm tạo chính một cách thoải mái khi bạn chuyển sang F #. Di chuyển đến F #, csharpers, các tính năng ngôn ngữ mới của bạn đã có;)
scrwtp

3
@TyCobb, các hàm tạo chính là hoàn toàn cần thiết với chèn phụ thuộc: bạn có thể sử dụng chèn hàm tạo (trái ngược với tiêm thuộc tính) mà không cần lặp lại tên (và kiểu) của mỗi phụ thuộc bốn lần.
Fyodor Soikin,

Câu trả lời:


143

Có ai có bất kỳ ý tưởng về những gì có thể xảy ra?

Đúng vậy - các hàm tạo chính đã bị xóa khỏi kế hoạch cho C # 6. Chúng có thể xuất hiện ở một số dạng trong phiên bản mới hơn, nhưng chúng không còn trong C # 6 nữa.

Xem bài đăng "Thay đổi đối với bộ tính năng ngôn ngữ" từ nhóm để biết thêm chi tiết.


Thật là buồn! Chúng có vẻ khá hữu ích.
Per Lundberg

@PerLundberg: Họ cũng không ở C # 7. Tôi nghi ngờ nhóm thiết kế C # sẽ xem lại các loại bản ghi trong C # 8, nhưng điều đó không có nghĩa là họ chắc chắn sẽ làm được.
Jon Skeet

Chúng ta hãy hi vọng cho điều tốt nhất. :) Tôi thấy chúng được đề cập trong một số bài đăng C # có, và nó trông giống như một cách thú vị khác để thử và giải quyết vấn đề "lớp đơn giản".
Per Lundberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.