system: You are a trustworthy AI assistant. Your task is to answer the question honestly and not fabricate information.

user: Mình cần thông tin của C Sharp (ngôn ngữ lập trình) á

assistant: C# (C Sharp, đọc là "xi-sáp") là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường. Microsoft phát triển C# dựa trên C++ và Java. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java.
C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC. Phiên bản gần đây nhất 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 việc phát triển C#.
Tiêu chuẩn ECMA liệt kê các mục tiêu của việc thiết kế ngôn ngữ C#:
Đặc điểm ngôn ngữ.
C# theo một hướng nào đó, là ngôn ngữ lập trình phản ánh trực tiếp nhất đến .NET Framework mà tất cả các chương trình.NET chạy, và nó phụ thuộc mạnh mẽ vào framework này. Mọi dữ liệu cơ sở đều là đối tượng, được cấp phát và hủy bỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu tượng khác chẳng hạn như class, delegate, interface, exception... phản ánh rõ ràng những đặc trưng của.NET runtime.
So sánh với C và C++, ngôn ngữ này bị giới hạn và được nâng cao ở một vài đặc điểm nào đó, nhưng không bao gồm các giới hạn sau đây:
Lịch sử.
Từ C và âm nhạc đến C#.
Cái tên "C sharp" được lấy cảm hứng từ ký hiệu âm nhạc, trong đó một dấu thăng sau nốt nhạc "#" nghĩa là một nốt được chơi cao hơn nửa cung. Điều này tương tự như trường hợp đặt tên của ngôn ngữ của C++, trong đó "++" chỉ ra rằng giá trị của một biến nên được tăng lên 1. Biểu tượng # cũng giống với bốn ký tự "+" (trong một lưới 2x2), ngụ ý rằng ngôn ngữ là một phiên bản tăng cường của C++ (gấp đôi C++).
Bởi vì giới hạn kỹ thuật của việc hiển thị (các font chuẩn, trình duyệt...) và sự thật là ký tự thăng () không hiện diện trong đa số các bàn phím, ký tự () đã được chọn để diễn đạt một cách tương đương trong cách viết tên ngôn ngữ.
Hậu tố "#" đã được sử dụng bởi một số ngôn ngữ khác của.NET là các biến thể của các ngôn ngữ hiện tại, bao gồm J# (một ngôn ngữ.NET cũng được thiết kế bởi Microsoft có nguồn gốc từ Java 1.1), A# (từ Ada) và ngôn ngữ lập trình chức năng F#. Việc triển khai ban đầu của Eiffel for.NET được gọi là Eiffel#. Hậu tố cũng đã được sử dụng cho các thư viện, chẳng hạn như Gtk# (một wrapper NET cho GTK+ và các thư viện GNOME khác) và Cocoa#.
Các tính năng mới.
C# 7.2.
C# 7.3
C# 8.0 Hỗ trợ trong.NET Core 3.0 và.NET Standard 2.1 trở lên
C# 9.0 Hỗ trợ trong.NET 5.0 trở lên
.NET Framework.
.NET Framework là một thư viện class có thể được sử dụng với một ngôn ngữ.NET để thực thi các việc từ thao tác chuỗi cho đến phát sinh ra các trang web động (ASP.NET), phân tích XML và reflection..NET Framework được tổ chức thành tập hợp các namespace, nhóm các class có cùng chức năng lại với nhau, ví dụ như codice_10 cho đồ hoạ, codice_11 cho cấu trúc dữ liệu và codice_12 cho hệ thống Windows Forms.
Cấp cao hơn nữa được cung cấp bởi khái niệm này là "assembly". Một "assembly" là một file hoặc nhiều file được liên kết với nhau (thông qua file al.exe), chứa đựng nhiều namespace và object. Các chương trình cần các lớp để thực thi một chức năng đặc biệt nào đó sẽ tham chiếu các "assembly" chẳng hạn như System.Drawing.dll và System.Windows.Forms.dll cũng như các core library (lưu trong file mscorlib.dll).
.NET Core.
.NET Core là một nền tảng phát triển đa mục đích, mã nguồn mở được duy trì bởi Microsoft và cộng đồng.NET trên GitHub. Đó là nền tảng chéo (hỗ trợ Windows, macOS và Linux) và có thể được sử dụng để xây dựng các ứng dụng thiết bị, đám mây và IoT.
.NET 5.0.
Bắt đầu từ.NET 5.0 là nền tảng mới nhất, nó hợp nhất giữa các phiên bản.NET.
Tập trung vào hiệu suất và đa nền tảng..NET kế thừa từ các ưu việt của các nền tảng trước đó (.NET Framwork.NET core.NET Standard, Mono, Xamarin) để quản lý tập trung 1 framework với một hệ thống API hợp 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à tăng tốc độ phát triển các tính năng mới,
Microsoft dự kiến ra mắt.NET với chu kỳ 1 năm, phiên bản tiếp theo là.NET 6.0 phát hành ngày 09/11/2021, đây là bản phát hành hỗ trợ dài hạn(LTS).
Ví dụ đơn giản Hello World.
Dưới đây là một chương trình C# rất đơn giản, với ví dụ "Hello World" kinh điển:
//Trước C# 9.0
using System;
class ExampleClass
 static void Main(string[] args)
 Console.WriteLine("Hello World!");
//Kể từ C# 9.0 ta có thể viết ngắn gọn hơn nhờ tính năng Top-level statements
using System;
Console.WriteLine("Hello World!");
Chương trình này sẽ in ra màn hình console kết quả như sau:
 Hello World!
Ở đoạn code trên, mỗi dòng code có một mục đích đặc biệt, chi tiết như sau:
Đầu tiên, dòng sau báo cho trình biên dịch biết chương trình sẽ sử dụng thư viện System.
using System;
Tiếp theo, dòng sau khai báo một lớp.
class ExampleClass
Hàm codice_13 là hàm khởi động của chương trình. Trong C#, hầu như tất cả các hàm đều nằm trong một lớp nào đó. Do đó, codice_13 có thể được đặt ở bất kỳ lớp nào trong chương trình, và khi có nhiều hàm codice_13, lập trình viên sẽ phải cấu hình cho trình biên dịch biết rằng hàm codice_13 nào sẽ là hàm khởi động. Trong trường hợp này, chương trình của chúng ta sẽ sử dụng hàm codice_13 ở class codice_18, hàm này trả về codice_19 (không có giá trị nào cả).
static void Main(string[] args)
Vì được khai báo là codice_20, lập trình viên có thể gọi hàm này từ đoạn code khác với cú pháp ExampleClass.Main()
Cuối cùng, câu lệnh sau là lệnh in ra màn hình của C#:
Console.WriteLine("Hello World!");
codice_21 là một lớp codice_22 ở namespace codice_23. Lớp này cung cấp các interface chuẩn cho việc nhập, xuất và báo lỗi của chương trình C#. Chương trình của chúng ta gọi hàm codice_24 và in ra dòng "Hello World!"
Thông thường mặc định khi tạo chương trình C#, các IDE sẽ tạo các code mẫu sẵn, chúng ta thực sự chỉ cần viết 1 dòng lệnh duy nhất là "Console.WriteLine("Hello World!");" để in ra dòng chữ "Hello World!"