25/05/2018, 00:44

C sharp ( C# )

C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, 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++ ...

C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, 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.

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, v.v, 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:

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 tính đều được kiểm tra tràn bộ đệm. Các con trỏ chỉ được sử dụng để gọi các loại kiểu giá trị; còn những đối tượng thuộc bộ thu rác (garbage-collector) thì chỉ được gọi bằng cách tham chiếu.

  • Các đối tượng không thể được giải phóng tường minh.
  • Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng (abstract interfaces). Chức năng này làm đơn giản hóa sự thực thi của thời gian thực thi.
  • C# thì an-toàn-kiểu (typesafe) hơn C++.
  • Cú pháp khai báo mảng khác nhau("
    int[] a = new int[5]
    " thay vì "
    int a[5]
    ").
  • Kiểu thứ tự được thay thế bằng tên miền không gian (namespace).
  • C# không có tiêu bản.
  • Có thêm Properties, các phương pháp có thể gọi các Properties để truy cập dữ liệu.
  • Có reflection.

Trong C# 3.0, sẽ có vài bổ sung cơ bản sau:

  • Các từ khóa "
    select, from, where
    " cho phép truy vấn từ một tập, từ SQL, v.v. (hay còn được gọi là LINQ - viết tắt của Language INtergrated Query)
  • Khởi tạo đối tượng:
    Customer c = new Customer(); c.Name="James";
    trở thành
    Customer c = new Customer { Name="James" };
  • Các biểu thức lambda:
    listOfFoo.Where(delegate(Foo x) { return x.size>10;})
    trở thành
    listOfFoo.Where(x => x.size>10);
  • var x = "hello";
    có thể hoán đổi với
    string x = "hello";
  • Các phương thức mở rộng

.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, thí dụ như System.Drawing cho đồ hoạ, System.Collections cho cấu trúc dữ liệu và System.Windows.Forms 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 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).

Dưới đây là một chương trình C# rất đơn giản, với thí dụ "Hello World" kinh điển:

public class ExampleClass
    {
    public static void Main()
    {
    System.Console.WriteLine("Hello world! ");
    }
    }
    

Chương trình này sẽ viết chuỗi Hello World! ra màn hình console. Mỗi dòng code có một mục đích đặc biệt, chi tiết như sau:

public class ExampleClass
    

Đây là định nghĩa lớp. public, nghĩa là các đối tượng trong project khác có thể tự do sử dụng lớp này. Tất cả thông tin trong dấu ngoặc móc mô tả về lớp này.

public static void Main()
    

Đây là điểm vào của chương trình. Nó có thể được gọi từ đoạn code khác với cú pháp

ExampleClass.Main()
. (The public static void portion is a subject for a slightly more advanced discussion.)
System.Console.WriteLine("Hello world!");
    
0