Mẫu hình | Lập trình cấu trúc, imperative, Lập trình hướng đối tượng, Lập trình hướng chức năng, Lập trình hướng sự kiện,event-driven, task-driven, functional, generic, reflective, concurrent |
---|---|
Họ | C |
Thiết kế bởi | Anders Hejlsberg (Microsoft) |
Nhà phát triển | Mads Torgersen (Microsoft) |
Xuất hiện lần đầu | 2000; 24 năm trước |
Phiên bản ổn định | 9.0
/ 13 tháng 11 năm 2020; 3 năm trước |
Bản xem thử | 10.0
|
Kiểm tra kiểu | static, dynamic, strong, safe, nominative, partially inferred |
Nền tảng | Common Language Infrastructure |
Giấy phép | CLR: MIT/X11 Mono compiler: dual GPLv3 and MIT/X11 |
Phần mở rộng tên tập tin | .cs |
Trang mạng | docs |
Các bản triển khai lớn | |
Visual C#, .NET Framework, Mono, DotGNU | |
Phương ngữ | |
Cω, Spec#, Polyphonic C#, Enhanced C# | |
Ảnh hưởng từ | |
C++, Eiffel, Java, Modula-3, Object Pascal, ML, VB, Icon, Haskell, Rust, J#, Cω, F#, J++ | |
Ảnh hưởng tới | |
Chapel, Crystal, D, J#, Dart, F#, Hack, Java, Kotlin, Monkey, Nemerle, Oxygene, Ring, Rust, Swift, Vala | |
|
C# (C Sharp, phát âm là 'xi-sáp') là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ và linh hoạt, được Microsoft phát triển. C# là bước khởi đầu cho kế hoạch .NET của Microsoft. Tên ngôn ngữ này bao gồm ký tự thăng theo Microsoft, nhưng theo tiêu chuẩn ECMA chỉ sử dụng dấu số thường. Microsoft đã dựa vào C++ và Java để phát triển C#. C# được xem là sự kết hợp hài hòa giữa C++, Visual Basic, Delphi và Java.
C# được thiết kế chủ yếu bởi Anders Hejlsberg, một kiến trúc sư phần mềm nổi tiếng với các sản phẩm như Turbo Pascal, Delphi, J++, và WFC. Phiên bản mới nhất hiện tại là 9.0, được phát hành vào năm 2020 cùng với Visual Studio 2019 phiên bản 16.8.
Mục tiêu của sự phát triển ngôn ngữ C#
Tiêu chuẩn ECMA đã nêu rõ các mục tiêu trong việc thiết kế ngôn ngữ C#:
- Ngôn ngữ này được thiết kế để là một công cụ lập trình đơn giản, hiện đại, đa dụng và hoàn toàn hướng đối tượng.
- Ngôn ngữ và các bản triển khai của nó tuân thủ các nguyên tắc kỹ thuật phần mềm như kiểm tra kiểu dữ liệu chặt chẽ, giới hạn mảng, phát hiện biến chưa khởi tạo và thu gom rác tự động. Độ bền, hiệu suất và khả năng lập trình là những yếu tố quan trọng của ngôn ngữ này.
- Ngôn ngữ sẽ được ứng dụng để phát triển các thành phần phần mềm theo hướng tối ưu cho môi trường phân tán.
- Khả năng di động là yếu tố quan trọng, đặc biệt với các lập trình viên có kinh nghiệm với C và C++.
- Hỗ trợ quốc tế hóa (i18n).
- Ngôn ngữ này được thiết kế để phù hợp với việc phát triển ứng dụng cho cả hệ thống được hỗ trợ và nhúng, từ các phần mềm lớn đến các ứng dụng cơ bản.
- Mặc dù ứng dụng C# có tính hiệu quả về bộ nhớ và xử lý, ngôn ngữ này không cạnh tranh trực tiếp về hiệu suất và kích thước với C hay assembly.
Các ứng dụng của C#
- Phát triển backend web (ASP.NET MVC, ASP.NET Core, Web API, Graph API, gRPC, Blazor Server, Uno Platform, Mono)
- Phát triển frontend web (Blazor WebAssembly, Uno Platform)
- Phát triển ứng dụng desktop (WinForms, WPF, UWP, WinUI, Mono, Uno, MAUI, Blazor Desktop...)
- Phát triển game 2D, 3D đa nền tảng (Game Engines: Unity, MonoGame, Godot, Stride, CryEngine, Flax Engine, Evergine, NeoAxis, XNA...)
- Phát triển thực tế ảo (VR), thực tế tăng cường (AR), thực tế hỗn hợp (MR) (HoloLens, Unity, CryEngine, Oculus Quest...)
- Phát triển ứng dụng đồ họa 2D, 3D đa nền tảng (2D: SkiaSharp, ImageSharp...; 3D: OpenTK, SharpDX, SharpVulkan, Vulkan.NET, Veldrid, Silk.NET, Helix Toolkit, Aspose...)
- Phát triển ứng dụng di động, IOS native, Android native (Xamarin, MAUI, Uno Platform)
- Phát triển đám mây (Azure, AWS, Google Cloud...)
- Học máy và trí tuệ nhân tạo (ML.NET, TensorFlow, csiSharp...)
- Khoa học dữ liệu, big data (csiSharp, Apache Spark)
- Blockchain (NEO, Stratis)
- Microservices và containers
- Internet of Things (IoT, 5G)
- Hệ thống nhúng (Raspberry Pi, PLC)
Đặc điểm ngôn ngữ
C# là một ngôn ngữ lập trình có sự kết nối trực tiếp với .NET Framework mà các ứng dụng .NET dựa vào, và nó phụ thuộc mạnh mẽ vào framework này. Tất cả dữ liệu cơ bản đều là đối tượng, được quản lý và dọn dẹp bởi Garbage Collector (GC), và nhiều kiểu trừu tượng như lớp, delegate, interface, exception... phản ánh rõ ràng các đặc trưng của .NET runtime.
So với C và C++, ngôn ngữ này có một số hạn chế và cải tiến trong một số khía cạnh nhất định, nhưng không bao gồm các hạn chế dưới đây:
- Các con trỏ chỉ có thể được sử dụng trong chế độ không an toàn. Hầu hết các đối tượng được tham chiếu an toàn, và các phép toán đều được kiểm tra tràn bộ đệm. Các con trỏ chỉ được dùng để gọi các kiểu giá trị; các đối tượng thuộc bộ gom rác chỉ có thể được gọi qua tham chiếu.
- Các đối tượng không thể được giải phóng một cách tường minh.
- Chỉ hỗ trợ kế thừa đơn, nhưng có thể cài đặt nhiều
interface
trừu tượng. Điều này giúp đơn giản hóa việc thực thi trong thời gian thực. - C# an toàn kiểu hơn so với C++.
- Cú pháp khai báo mảng khác biệt ('
int[] a = new int[5]
' thay vì 'int a[5]
'). - Kiểu thứ tự được thay thế bằng không gian tên (namespace).
- C# không có tiêu bản.
- Hỗ trợ Properties, các phương pháp có thể gọi Properties để truy cập dữ liệu.
- Có tính năng reflection.
- Hỗ trợ lập trình chức năng.
- Hỗ trợ kiểu động.
Các đặc điểm nổi bật của ngôn ngữ C#
- C# là một ngôn ngữ đơn giản và mạnh mẽ
- C# được xây dựng dựa trên nền tảng của C++ và Java, chịu ảnh hưởng từ Delphi, VisualBasic, do đó kế thừa các ưu điểm và loại bỏ các yếu điểm của các ngôn ngữ đó. C# cũng giản lược các cú pháp thừa và bổ sung các cú pháp cải tiến.
- C# là một ngôn ngữ lập trình bậc cao và đa nền tảng, dễ tiếp cận và phù hợp cho người mới bắt đầu. Ví dụ, để in dòng chữ 'Hello world' trong C#, chỉ cần một câu lệnh: System.Console.WriteLine('Hello world');
- C# là một ngôn ngữ đa năng và hiện đại
- C# phù hợp với việc phát triển trong kỷ nguyên 4.0, bao gồm phát triển web, ứng dụng di động, game, học máy, trí tuệ nhân tạo, đám mây, IoT, blockchain, microservices...
- C# là ngôn ngữ lập trình hướng đối tượng và cũng hỗ trợ lập trình chức năng
- C# hỗ trợ mạnh mẽ phương pháp lập trình hướng đối tượng và cũng hỗ trợ lập trình chức năng qua các biểu thức lambda, khớp mẫu, hàm, và thuộc tính bất biến.
- C# là ngôn ngữ kiểu tĩnh, định kiểu mạnh nhưng cũng hỗ trợ kiểu động.
- C# với kiểu tĩnh mang lại ưu điểm như bảo đảm an toàn kiểu và tự động phân tích lỗi cú pháp ngay khi viết mã.
- Khi kết hợp với IDE Visual Studio, C# nhận được sự hỗ trợ từ Visual Studio IntelliCode, sử dụng trí tuệ nhân tạo để giúp viết mã nhanh chóng và dễ dàng hơn.
- C# có số lượng từ khóa ít
- C# có khoảng hơn 80 từ khóa.
- C# là một trong những ngôn ngữ lập trình phổ biến và phát triển nhanh nhất
- Theo TIOBE Index, tính đến tháng 10/2020, C# đứng thứ 5 trong bảng xếp hạng ngôn ngữ phổ biến nhất thế giới.
- Theo PYPL, tính đến tháng 10/2020, C# là ngôn ngữ được cộng đồng quan tâm và chia sẻ nhiều thứ 4 trên thế giới.
- Theo [./Https://github.com/ Github] (Kho lưu trữ mã nguồn lớn nhất thế giới), tính đến tháng 10/2020, C# là ngôn ngữ hoạt động nhiều thứ 4.
- Cộng đồng phát triển và số lượng người học ngôn ngữ C# đang ngày càng tăng. Theo ước tính tháng 10/2020, cộng đồng phát triển C# có hơn 6 triệu người.
- C# kết hợp chặt chẽ với nền tảng.NET [3] - một nền tảng mạnh mẽ của Microsoft.
- C# còn có các ưu điểm khác:
- C# là ngôn ngữ mã nguồn mở, vì vậy miễn phí và mọi người đều có thể tham gia phát triển và đề xuất thiết kế ngôn ngữ C#.
- C# là ngôn ngữ đa nền tảng, có thể biên dịch trên nhiều hệ điều hành khác nhau (Windows, Linux, MacOS).
- C# có hiệu suất cao và tốc độ thực thi nhanh nhờ sử dụng trình biên dịch trung gian (CLR), và phát triển phần mềm nhanh chóng so với nhiều ngôn ngữ khác.
- C# đi kèm với IDE Visual Studio và nhiều plugin mạnh mẽ, đồng thời có thể viết C# bằng các trình soạn thảo văn bản khác như Visual Studio Code, Vim, NetBeans...
- C# có cấu trúc gần gũi với các ngôn ngữ lập trình truyền thống, nhưng cũng có các yếu tố hiện đại, giúp người mới học dễ dàng tiếp cận và học nhanh.
- C# có cộng đồng phát triển mạnh mẽ.
- C# được cải tiến liên tục với một phiên bản mỗi năm, đáp ứng nhu cầu công nghệ của các nhà phát triển.
- C# có tài liệu tham khảo và hướng dẫn phong phú, cùng với các buổi hội thảo về tính năng mới và định hướng phát triển.
- C# và .NET được đánh giá cao về thiết kế, với cú pháp và logic nhất quán, mã nguồn C# dễ đọc và mở rộng.
- C# được Microsoft thiết kế và phát triển, do đó nhận được sự quan tâm và hỗ trợ mạnh mẽ từ Microsoft.
Lịch sử
Từ C và âm nhạc đến C#
Tên gọi 'C sharp' lấy cảm hứng từ ký hiệu âm nhạc, trong đó dấu thăng '#' sau nốt nhạc biểu thị việc nâng nốt lên nửa cung. Tương tự như tên của ngôn ngữ C++, với '++' cho thấy giá trị của biến nên được tăng thêm 1. Biểu tượng # cũng tương tự như bốn ký tự '+' (trong lưới 2x2), ngụ ý rằng ngôn ngữ là phiên bản nâng cấp của C++ (gấp đôi C++).
Vì các hạn chế về kỹ thuật hiển thị (các font chuẩn, trình duyệt...) và thực tế rằng ký tự thăng (U+266F ♯ MUSIC SHARP SIGN (HTML ♯
)) không có trên nhiều bàn phím, ký tự (U+0023 # NUMBER SIGN (HTML #
)) đã được chọn để thay thế một cách tương đương trong việc viết tên ngôn ngữ.
Hậu tố '#' đã được áp dụng cho một số ngôn ngữ khác trong .NET, là những biến thể của các ngôn ngữ hiện có, bao gồm J# (một ngôn ngữ .NET do Microsoft phát triển, bắt nguồn từ Java 1.1), A# (từ Ada) và ngôn ngữ lập trình chức năng F#. Phiên bản đầu tiên của Eiffel for .NET được gọi là Eiffel#. Hậu tố này cũng được sử dụng cho các thư viện như Gtk# (một lớp bọc .NET cho GTK+ và các thư viện GNOME khác) và Cocoa#.
Các phiên bản
Phiên bản | Đặc tả ngôn ngữ | Ngày phát hành | .NET Framework | Visual Studio | ||
---|---|---|---|---|---|---|
ECMA | ISO/IEC | Microsoft | ||||
C# 1.0 | Tháng 12 năm 2002 | Tháng 4 năm 2003 | Tháng 1 năm 2002 | Tháng 1 năm 2002 | .NET Framework 1.0 | Visual Studio.NET 2002 |
C# 1.1 C# 1.2 |
Tháng 10 năm 2003 | Tháng 4 năm 2003 | .NET Framework 1.1 | Visual Studio.NET 2003
| ||
C# 2.0 | Tháng 6 năm 2006 | Tháng 9 năm 2006 | Tháng 9 2005 | Tháng 11 năm 2005 | .NET Framework 2.0 | Visual Studio 2005 |
C# 3.0 | Không | Tháng 8 năm 2007 | Tháng 11 năm 2007 |
.NET Framework 2.0 (Except LINQ) |
Visual Studio 2008 Visual Studio 2010 | |
C# 4.0 | Tháng 4 năm 2010 | Tháng 4 năm 2010 | .NET Framework 4 | Visual Studio 2010 | ||
C# 5.0 | Trong quá trình | Không | Tháng 6 năm 2013 | Tháng 8 năm 2012 | .NET Framework 4.5 | Visual Studio 2012 Visual Studio 2013 |
C# 6.0 | Không | Bản nháp | Tháng 7 năm 2015 | .NET Framework 4.6 | Visual Studio 2015 | |
C# 7.0 | Không | Tháng 3 năm 2017 | .NET Framework 4.6.2 | Visual Studio 2017 | ||
C# 7.1 | Không | Không | Không | Tháng 8 năm 2017 | .NET Framework 4.6.2 | Visual Studio 2017 phiên bản 15.3 |
C# 7.2 | Không | Không | Không | Tháng 11 năm 2017 | .NET Framework 4.7.1 | Visual Studio 2017 phiên bản 15.5 |
C# 7.3 | Không | Tháng 5 năm 2018 | Tháng 5 năm 2018 | .NET Core 2.1
.NET Core 2.2 .NET Framework 4.8 |
Visual Studio 2017 phiên bản 15.7 | |
C# 8.0 | Tháng 9 năm 2019 | Tháng 9 năm 2019 | .NET Core 3.0 | Visual Studio 2019 phiên bản 16.3 | ||
C# 9.0 | Tháng 11 năm 2020 | 13 Tháng 11 năm 2020 | .NET 5.0 | Visual Studio 2019 phiên bản 16.8 |
Các tính năng mới
C# 2.0
- Generics
- Các kiểu một phần (Partial types)
- Hàm vô danh (Anonymous functions)
- Iterator
- Các kiểu Nullable
- Khả năng truy cập getter/setter riêng biệt
- Phương pháp nhóm delegate
- Co- và Contra-variance cho các delegate
- Các lớp static
- Suy diễn delegate
C# 3.0
- LINQ
- Cải thiện khởi tạo đối tượng:
Customer c = new Customer(); c.Name='James';
có thể viết lại thànhCustomer c = new Customer { Name='James' };
- Biểu thức lambda:
listOfFoo.Where(delegate(Foo x) { return x.size>10;})
trở thànhlistOfFoo.Where(x => x.size>10);
- Gõ biến cục bộ tự động, ví dụ
var x = 'hello';
có thể thay thế bằngstring x = 'hello';
- Các property tự động hiện thực hóa
- Các kiểu anonymous
- Các hàm mở rộng
- Cây biểu thức
- Các hàm partial
C# 4.0
- Liên kết động (Dynamic binding)
- Tham số được đặt tên và tùy chọn
- Co- và contravariance cho các kiểu generic
- Các kiểu interop nhúng ('NoPIA')
C# 5.0
- Các hàm bất đồng bộ (Asynchronous functions)
- Truy xuất thông tin về các thành phần gọi hàm
C# 6.0
- Compiler-as-a-service (Roslyn)
- Nhập các thành viên static vào không gian tên
- Điều kiện ngoại lệ (Exception filters)
- Chờ đợi trong các khối catch/finally
- Cài đặt tự động cho property
- Các thành viên trong biểu thức
- Toán tử kiểm tra null
- Chuỗi nội suy (Interpolated strings)
- Toán tử nameof
- Biến out
- Khớp mẫu (Pattern matching)
- Tuple
- Deconstruction
- Hàm cục bộ
- Kiểu ValueTask
- Constructor và finalizer trong biểu thức
- Getter và setter trong biểu thức
- Toán tử Throw cũng có thể dùng làm biểu thức
- Hàm main bất đồng bộ (Async main)
- Các phần tử của tuple có thể được đặt tên
- Tham chiếu ngữ nghĩa với các kiểu giá trị
- Tham số đặt tên không có hậu tố
- Giới hạn truy cập private protected cho các trường
- Tuple hỗ trợ toán tử == và !=
- Quá tải phương thức print
- Đưa các biến biểu thức vào trong trình khởi tạo
- Gán attribute cho các trường sao lưu của thuộc tính tự động
C# 8.0 Được hỗ trợ trên.NET Core 3.0 và.NET Standard 2.1 trở lên
- Kiểu tham chiếu nullable (Nullable reference types)
- Thành viên chỉ đọc cho struct (Readonly Members)
- Phương thức mặc định trong interface (Default interface methods)
- Hàm cục bộ tĩnh (Static local functions)
- Mở rộng pattern matching cho biểu thức switch, property patterns, tuple pattern, positional pattern
- Phạm vi và chỉ số (Ranges and indices)
- Cải thiện khai báo từ khóa using (Using declarations)
- Toán tử kiểm tra và gán khi biến là null (Null-coalescing assignment)
- Luồng bất đồng bộ (Asynchronous streams)
- Asynchronous disposable
- Các loại không được quản lý (Unmanaged types)
- Stackalloc trong biểu thức lồng nhau
- Cải thiện chuỗi nội suy verbatim
C# 9.0 Hỗ trợ từ.NET 5.0 trở lên
- Đối tượng bản ghi (Record)
- Thuộc tính chỉ đọc (Init only setters)
- Biểu thức cấp cao nhất (Top-level statements):
// Trước C# 9.0 using System; class ExampleClass { static void Main(string[] args) { Console.WriteLine('Hello World!'); } } // Từ C# 9.0 trở lên using System; Console.WriteLine('Hello World!');
- Cải tiến khớp mẫu (Pattern matching enhancements)
- Số nguyên kích thước tự nhiên (Native sized integers)
- Con trỏ hàm (Function pointers)
- Cờ suppress emitting locals init
- Hỗ trợ tự động nhận diện và khởi tạo kiểu qua biểu thức new (Target-typed new expressions)
- Hàm tĩnh ẩn danh (Static anonymous functions)
- Biểu thức điều kiện theo kiểu mục tiêu (Target-typed conditional expressions)
- Loại trả về đồng biến (Covariant return types)
- Hỗ trợ GetEnumerator cho vòng lặp foreach
- Tham số lambda bị loại bỏ
- Attributes trên các hàm địa phương
- Khởi tạo module
.NET Framework
.NET Framework là thư viện lớp dùng cho các ngôn ngữ.NET để thực hiện nhiều nhiệm vụ như xử lý chuỗi, tạo trang web động (ASP.NET), phân tích XML, và phản chiếu. Nó được tổ chức thành các namespace, nhóm các lớp có chức năng tương tự, ví dụ như System.Drawing
cho đồ họa, System.Collections
cho cấu trúc dữ liệu, và System.Windows.Forms
cho Windows Forms.
Khái niệm cao cấp hơn trong.NET Framework là assembly. Một assembly là một hoặc nhiều file liên kết với nhau (qua file al.exe), chứa nhiều namespace và đối tượng. Các chương trình cần lớp để thực hiện một chức năng cụ thể sẽ tham chiếu đến các assembly như System.Drawing.dll và System.Windows.Forms.dll, cũng như các thư viện cốt lõi (lưu trong file mscorlib.dll).
.NET Core
.NET Core là nền tảng phát triển đa năng, mã nguồn mở do Microsoft và cộng đồng.NET trên GitHub duy trì. Đây là nền tảng hỗ trợ đa hệ điều hành (Windows, macOS, Linux) và thích hợp cho việc phát triển ứng dụng cho thiết bị, đám mây, và IoT.
.NET 5.0
Từ phiên bản.NET 5.0, nền tảng đã được đổi mới, hợp nhất các phiên bản.NET trước đây.
Với sự tập trung vào hiệu suất và khả năng đa nền tảng, .NET kế thừa các ưu điểm của các nền tảng trước (.NET Framework, .NET Core, .NET Standard, Mono, Xamarin), quản lý một hệ thống API thống nhất cho các nền tảng phát triển của.NET, giúp nâng cao hiệu suất và thúc đẩy sự phát triển tính năng nhanh chóng.
Microsoft dự kiến phát hành.NET theo chu kỳ hàng năm, với phiên bản tiếp theo là.NET 6.0 ra mắt vào ngày 09/11/2021, bản phát hành này được hỗ trợ lâu dài (LTS).
Ví dụ cơ bản về Hello World
Dưới đây là một chương trình C# cực kỳ đơn giản với ví dụ kinh điển 'Hello World':
//Trước C# 9.0 using System; class ExampleClass { static void Main(string[] args) { Console.WriteLine('Hello World!'); } } //Từ C# 9.0, ta có thể viết gọn hơn với tính năng Top-level statements using System; Console.WriteLine('Hello World!');
Chương trình này sẽ hiển thị kết quả trên màn hình console như sau:
Chào thế giới!
Trong đoạn mã này, mỗi dòng mã thực hiện một nhiệm vụ cụ thể như sau:
Trước tiên, dòng mã này thông báo cho trình biên dịch rằng chương trình sẽ sử dụng thư viện System.
using System;
Sau đó, dòng mã tiếp theo khai báo một lớp mới.
class ExampleClass
Hàm Main
đóng vai trò là điểm khởi đầu của chương trình. Trong C#, tất cả các hàm thường phải nằm trong một lớp cụ thể. Vì vậy, hàm Main
có thể nằm ở bất kỳ lớp nào, và nếu có nhiều hàm Main
, lập trình viên cần chỉ định hàm nào sẽ được sử dụng làm điểm khởi động. Trong trường hợp này, hàm Main
sẽ nằm trong lớp ExampleClass
và không trả về giá trị gì (void
).
static void Main(string[] args)
Vì được khai báo là static
, hàm này có thể được gọi trực tiếp từ các đoạn mã khác bằng cú pháp sau:
ExampleClass.Main()
Cuối cùng, câu lệnh dưới đây dùng để hiển thị thông tin trên màn hình trong C#:
Console.WriteLine('Hello World!');
Lớp Console
là một lớp static
nằm trong namespace System
. Lớp này cung cấp các giao diện chuẩn cho việc nhập, xuất dữ liệu và xử lý lỗi trong chương trình C#. Chúng ta sử dụng phương thức WriteLine
để in ra thông báo 'Hello World!'
Thông thường, khi tạo một chương trình C#, các IDE sẽ tự động sinh ra một số mã mẫu. Thực tế, chúng ta chỉ cần thêm một dòng lệnh đơn giản là Console.WriteLine('Hello World!'); để hiển thị dòng chữ Hello World!
Ghi chú
- ^ Không đồng bộ
- ^ Tài liệu Microsoft C# 2.0 chỉ bao gồm các tính năng mới của phiên bản 2.0. Để tìm hiểu các tính năng cũ hơn, hãy tham khảo thông số kỹ thuật phiên bản 1.2
- ^ Không có thông số kỹ thuật ECMA hoặc ISO/IEC cho các phiên bản C# 3.0, 4.0, 5.0, 6.0 hoặc 7.0.
- ^ Không có thông số kỹ thuật ECMA hoặc ISO/IEC cho các phiên bản C# 3.0, 4.0, 5.0, 6.0 hoặc 7.0.
- ^ Không có thông số kỹ thuật ECMA hoặc ISO/IEC cho các phiên bản C# 3.0, 4.0, 5.0, 6.0 hoặc 7.0.
Liên kết tham khảo
- Ngôn ngữ C# (MSDN)
- Ví dụ mã ASP.NET 2.0 trong C# từ DotNetSpace
- Sách C# trực tuyến đầy đủ, lưu trữ ngày 2008-01-29 tại Wayback Machine
- Tiêu chuẩn C#
- Tiêu chuẩn ECMA-334 về ngôn ngữ C# (PDF)
- Tiêu chuẩn ISO về ngôn ngữ C# (cần mua)
- Microsoft Visual C#.NET
- F# Lưu trữ ngày 2008-11-19 tại Wayback Machine
Ngôn ngữ lập trình |
---|