Câu hỏi Số phiên bản chính xác cho C # là gì?


Số phiên bản chính xác cho C # là gì? Điều gì xảy ra khi nào? Tại sao tôi không thể tìm thấy bất kỳ câu trả lời nào về C # 3.5?

Câu hỏi này chủ yếu để hỗ trợ những người đang tìm kiếm câu trả lời bằng cách sử dụng số phiên bản không chính xác, ví dụ: C # 3.5. Hy vọng là bất kỳ ai không tìm được câu trả lời với số phiên bản sai sẽ tìm thấy điều này câu hỏi và sau đó tìm kiếm lại với số phiên bản phù hợp.


2072


gốc


Đây là một trong những nguồn tốt để hiểu mọi thứ. en.wikipedia.org/wiki/C_Sharp_(programming_language)
Không phải đoạn thứ hai sẽ nằm trong một bình luận thay vì câu hỏi, vì nó không phải là một phần của câu hỏi - TankorSmash
@TankorSmash: Tôi nghĩ rằng nó đủ quan trọng như bối cảnh của câu hỏi rằng nó đáng để giữ nó ở đâu. IMO, tất nhiên rồi. - Jon Skeet
@TankorSmash, vì đây là một câu hỏi tự trả lời có vẻ thích hợp rằng lời giải thích (đoạn thứ hai) có và không bị mất trong các ý kiến. - YoungCoconutCode


Các câu trả lời:


Lịch sử phiên bản ngôn ngữ C #:

Đây là những phiên bản của C # được biết đến tại thời điểm viết bài này:

Đáp lại câu hỏi của OP:

Số phiên bản chính xác cho C # là gì? Điều gì xảy ra khi nào? Tại sao tôi không tìm thấy câu trả lời nào về C # 3.5?

Không có điều như C # 3.5 - nguyên nhân gây nhầm lẫn ở đây là C # 3.0 có mặt trong .NET 3.5. Ngôn ngữ và khung được phiên bản độc lập, tuy nhiên - như là CLR, mà là ở phiên bản 2.0 cho .NET 2.0 đến 3.5, .NET 4 giới thiệu CLR 4.0, gói dịch vụ bất kể. CLR trong .NET 4.5 có nhiều cải tiến, nhưng phiên bản không rõ ràng: ở một số nơi nó có thể được gọi là CLR 4.5 (trang MSDN này được sử dụng để chỉ nó theo cách đó, ví dụ), nhưng Environment.Version tài sản vẫn báo cáo 4.0.xxx.

Thông tin chi tiết hơn về mối quan hệ giữa ngôn ngữ, thời gian chạy và các phiên bản khung công tác có sẵn trên C # trong chiều sâu trang web. Điều này bao gồm thông tin về các tính năng của C # 3.0 mà bạn có thể sử dụng khi nhắm mục tiêu .NET 2.0. (Nếu bất cứ ai muốn đưa tất cả nội dung vào câu trả lời wiki này, chúng sẽ được chào đón.)

Kể từ ngày 3 tháng 5 năm 2017, Nhóm Ngôn ngữ C # đã tạo lịch sử các phiên bản C # và các tính năng trên repo github của họ: Các tính năng được thêm vào trong C #. Cũng có một trang theo dõi các tính năng ngôn ngữ được triển khai gần đây và gần đây.


2402



@cvraman: Tôi vừa mới nhận được email từ một người đã lưu ý rằng trang đã thay đổi và không đề cập đến nó là CLR 4.5. Không phải là phiên bản thú vị? :) - Jon Skeet
@cvraman: Tôi sẽ rời khỏi nó ngay bây giờ, vì tôi thực sự nghi ngờ rằng một số những nơi vẫn sẽ gọi nó là 4.5, darn nó ... - Jon Skeet
Đối với bất kỳ ai được đề xuất bao gồm các bộ sưu tập đồng thời: đây là danh sách ngôn ngữ tính năng, không khuôn khổ Tính năng, đặc điểm. Lưu ý việc thiếu đề cập đến WPF, v.v. - Jon Skeet
AFAIK, phiên bản ổn định và đáng tin cậy duy nhất có C # được gọi là Jon Skeet ... phần còn lại chỉ là số: D - Carls Jr.
@alper: Unity sẽ không phải là phiên bản C # cụ thể nhiều như phiên bản .NET framework và / hoặc thời gian chạy cụ thể. IIRC, nó có hiệu quả trên CLR v2, nhưng có thể có một số khía cạnh của .NET 3.5. - Jon Skeet


Vấn đề lớn nhất khi giao dịch với các số phiên bản của C # là thực tế là nó không liên quan đến phiên bản .NET Framework, mà nó xuất hiện là do các bản phát hành đồng bộ giữa Visual Studio và .NET Framework.

Các phiên bản của C # thực sự là ràng buộc với trình biên dịch, không phải là khuôn khổ. Ví dụ, trong Visual Studio 2008 bạn có thể viết C # 3.0 và nhắm mục tiêu .NET Framework 2.0, 3.0 và 3.5. Danh mục C # 3.0 mô tả phiên bản cú pháp mã và các tính năng được hỗ trợ theo cách tương tự ANSI C89, C90, C99 mô tả cú pháp / tính năng mã cho C.

Hãy xem Monovà bạn sẽ thấy rằng Mono 2.0 (hầu hết được triển khai phiên bản 2.0 của .NET Framework từ các đặc tả ECMA) hỗ trợ cú pháp và tính năng C # 3.0.


241



Đúng vậy. Nhưng tôi sẽ không gọi nó là "một vấn đề", chứ không phải là "lợi thế". Công ty của tôi xây dựng một ứng dụng 2.0 sử dụng tất cả các tính năng tuyệt vời của C # 4.0 - yêu thích nó. - Alex
Trong ngắn hạn, C # phiên bản được ràng buộc để trình biên dịch và không phải trên khuôn khổ .net. - SHEKHAR SHETE


Điều này cũng giống như hầu hết các câu trả lời ở đây, nhưng được lập bảng cho dễ dàng, và nó có Visual Studio và các phiên bản .NET cho đầy đủ.

╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║
╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣
║    1.0     ║    2002    ║    1.0       ║     1.0     ║   Feb 2002   ║
║    1.2     ║    2003    ║    1.1       ║     1.1     ║   Apr 2003   ║
║    2.0     ║    2005    ║    2.0       ║     2.0     ║   Nov 2005   ║
║            ║            ║    3.0       ║     2.0     ║   Nov 2006   ║
║    3.0     ║    2008    ║    3.5       ║     2.0     ║   Nov 2007   ║
║    4.0     ║    2010    ║    4.0       ║     4       ║   Apr 2010   ║
║    5.0     ║    2012    ║    4.5       ║     4       ║   Aug 2012   ║
║    5.0     ║    2013    ║    4.5.1     ║     4       ║   Oct 2013   ║
║            ║            ║    4.5.2     ║     4       ║   May 2014   ║
║    6.0     ║    2015    ║    4.6       ║     4       ║   Jul 2015   ║
║            ║            ║    4.6.1     ║     4       ║   Nov 2015   ║
║            ║            ║    4.6.2     ║     4       ║   Aug 2016   ║
║    7.0     ║    2017    ║              ║             ║   Mar 2017   ║
║            ║            ║    4.7       ║     4       ║   May 2017   ║
║    7.1     ║ 2017(v15.3)║              ║             ║   Aug 2017   ║
║            ║            ║    4.7.1     ║     4       ║   Oct 2017   ║
║    7.2     ║ 2017(v15.5)║              ║             ║   Dec 2017   ║
║            ║            ║    4.7.2     ║     4       ║   Apr 2018   ║
║    7.3     ║ 2017(v15.7)║              ║             ║   May 2018   ║
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝

Lưu ý: Phát triển .NET khá độc lập với VS những ngày này, không có sự tương quan giữa các phiên bản của mỗi phiên bản. Tham khảo: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependenciesđể biết thêm.


179



Trông khủng khiếp trên thiết bị di động. ôi! - Happypig375
Nếu có vẻ ổn trên ứng dụng stackoverflow - Dileep
Phiên bản .NET Core là gì? - Pac0
@ Pac0 .NET Core phát triển khá độc lập với phát triển VS và khó theo dõi (là nguồn mở). Trong thực tế, tất cả VS, .NET và .NET Core đang lặp lại khá nhanh. - nawfal


  • C # 1.0 với Visual Studio.NET

  • C # 2.0 với Visual Studio 2005

  • C # 3.0 với Visual Studio 2008

  • C # 4.0 với Visual Studio 2010

  • C # 5.0 với Visual Studio 2012

  • C # 6.0 với Visual Studio 2015

  • C # 7.0 với Visual Studio 2017


164



C # 5 CTP cài đặt trên đầu trang của Visual Studio 2010. Chúng tôi không có bằng chứng cho thấy bản phát hành cuối cùng sẽ làm như vậy. Hãy nhớ rằng LINQ CTP cũng được cài đặt trên Visual Studio 2005. - Jon Skeet
Vâng, đã đồng ý, trừ khi phiên bản tiếp theo của Visual Studio xuất hiện, Microsoft sẽ chủ động thực hiện điều đó. - iTSrAVIE


PHIÊN BẢN_____THÔNG SỐ KỸ THUẬT NGÔN NGỮ______MICROSOFT COMPILER

C # 1,0/1,2____Tháng 12 năm 2001?/ 2003?___________Tháng 1 năm 2002?

C # 2.0_______Tháng 9 năm 2005________________Tháng 11 năm 2005?

C # 3.0_______Tháng 5 năm 2006_____________________Tháng 11 năm 2006?

C # 4.0_______Tháng 3 năm 2009 (dự thảo)______________Tháng 4 năm 2010?

C # 5.0; được phát hành với .NET 4.5 vào tháng 8 năm 2012

C # 6.0; được phát hành với .NET 4.6 2015

C # 7.0; phát hành với .NET 4.7 2017


63



Bạn đã nhận được đặc tả ngôn ngữ C # 2.0 vào tháng 12 năm 2002 từ đâu? Tương tự C # 4 vào tháng 6 năm 2006? Bạn có chắc chắn bạn không nói về các ấn bản ECMA, các phiên bản này hoàn toàn khác nhau không? - Jon Skeet
chỉ cần tham khảo liên kết sau en.wikipedia.org/wiki/C_Sharp_(programming_language) - Pramodh


Bạn có thể kiểm tra các phiên bản C # mới nhất đây C# Versions


36





Lịch sử Phiên bản C #:

C # là một ngôn ngữ lập trình hướng đối tượng đơn giản và mạnh mẽ được phát triển bởi Microsoft.

C # đã phát triển nhiều kể từ khi phát hành đầu tiên vào năm 2002. C # đã được giới thiệu với .NET Framework 1.0.

Bảng sau đây liệt kê các tính năng quan trọng được giới thiệu trong mỗi phiên bản của C #.

Enter image description here

Và phiên bản C # mới nhất có sẵn trong C # Phiên bản.


35





Tôi đã tóm tắt hầu hết các phiên bản trong bảng này. Những người duy nhất còn thiếu nên là phiên bản ASP.NET Core. Tôi cũng đã thêm các phiên bản khác nhau của ASP.NET MVC.

Lưu ý rằng ASP.NET 5 đã được đổi tên thành ASP.NET Core 1.0 và ASP.NET MVC 6 đã được đổi tên thành ASP.NET Core MVC 1.0.0. Tôi tin rằng sự thay đổi này xảy ra vào khoảng tháng 1 năm 2016.

Tôi đã bao gồm ngày phát hành của ASP.NET 5 RC1 trong bảng, nhưng tôi chưa bao gồm ASP.NET lõi 1.0 và các phiên bản lõi khác, bởi vì tôi không thể tìm thấy ngày phát hành chính xác. Bạn có thể đọc thêm về các ngày phát hành liên quan đến ASP.NET Core tại đây: Khi nào là ASP.NET Core 1.0 (ASP.NET 5 / vNext) được lên lịch phát hành?

Version


32



Tôi không chắc rằng có MVC trong cùng một bảng là hữu ích, phải trung thực ... nó chỉ là trên một lịch trình phát hành riêng biệt, có hiệu quả. - Jon Skeet
@Jon Điều này là đúng, chỉ cần thêm nó ở đây cho bất cứ ai có thể cần nó, bởi vì tôi đã cố gắng tìm ra ngày phát hành correponding của .NET frameworks, để tôi hiểu rõ hơn về toàn bộ lịch sử phiên bản. - Mindless


So sánh các bài viết MSDN "Có gì mới trong ngôn ngữ và trình biên dịch C # 2.0" và "Có gì mới trong Visual C # 2005", có thể suy ra rằng" C # major_version.minor_version "được đặt ra theo số phiên bản của trình biên dịch.

C # 1.2 tương ứng với .NET 1.1 và VS 2003 và cũng được đặt tên là Visual C # .NET 2003.

Nhưng hơn nữa trên Microsoft dừng lại để tăng số phiên bản nhỏ (sau dấu chấm) hoặc để có chúng khác không, 0. Mặc dù cần lưu ý rằng C # tương ứng với .NET 3.5 được đặt tên trong msdn.microsoft.com là "Visual C # 2008 Gói Dịch vụ 1".

Có hai tên song song: Bằng cách đánh số phiên bản .NET / trình biên dịch chính và đánh số Visual Studio.

C # 2.0 là một từ đồng nghĩa cho Visual C # 2005

C # 3.0 tương ứng (hoặc, chính xác hơn, có thể nhắm mục tiêu) đến:


24



Không, C # tương ứng với .NET 3.5 được đặt tên là "Visual C # 2008" nếu bạn thực sự muốn sử dụng số đó. Các tính năng C # 3.0 đã được giới thiệu trong "Visual C # 2008", đó là lý do tại sao trên trang bạn đang liên kết với chúng trong "Có gì mới trong phiên bản phát hành ban đầu của Visual C # 2008". Tuy nhiên, việc sử dụng các số phiên bản Visual Studio là một ý tưởng tồi, vì nó có ý nghĩa rất ít khi bạn đang xây dựng với Mono, ví dụ. Ngôn ngữ C # có số phiên bản được chỉ định rõ ... chúng tôi biết sản phẩm Visual C # nào ban đầu đã giới thiệu phiên bản C # đó, nhưng chúng không giống nhau. - Jon Skeet
@ JonSkeet, không, tôi không biết. Muốn hỏi bạn (và người trả lời khác) cập nhật câu trả lời của bạn nhưng vì nhận xét của tôi trở nên quá dài, tôi đã quyết định sau đó đặt câu trả lời. Cảm ơn thông tin của bạn - Gennady Vanin Геннадий Ванин
Tôi không nghĩ rằng C # 3.0 có thể chạy trên VS 2005. - nawfal