C thăng

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm
C#
C#
C Sharp wordmark.svg
Phần mở rộng thường gặp .cs
Mô hình lập trình Multi-paradigm programming language: Lập trình cấu trúc, Imperative programming, Lập trình hướng đối tượng, Event-driven programming, The Task-based Asynchronous Pattern, Lập trình hàm, Generic programming, Reflection (khoa học máy tính), Concurrent computing
Xuất hiện vào 2000
Thiết kế bởi Microsoft
Nhà phát triển Microsoft
Turing đầy đủ Yes
Kiểm tra kiểu Static typing, Dynamic typing,[1] Type system#Strong and weak typing, Type system#Safely and unsafely typed systems, Nominal type system, Type inference
Hiện thực Microsoft Visual C Sharp, .NET Framework, Mono, DotGNU
Thuộc loại ngôn ngữ , Spec Sharp, Polyphonic C Sharp
Ảnh hưởng từ C++,[2] Eiffel (programming language), Java (ngôn ngữ lập trình),[2] Modula-3, Object Pascal,[3] ML (programming language), Icon (programming language), Haskell (ngôn ngữ lập trình), , F Sharp (programming language)[note 1]
Ảnh hưởng tới D (programming language), Dart (ngôn ngữ lập trình),[4] F Sharp (programming language), Java (ngôn ngữ lập trình),[5] Kotlin (programming language), Monkey X, Nemerle, Swift (ngôn ngữ lập trình),[6] Vala (programming language)
Giấy phép Common Language Runtime is proprietary, Mono compiler is dual GPLv3, Giấy phép MIT and libraries are Giấy phép Công cộng GNU Hạn chếv2, DotGNU is dual Giấy phép Công cộng GNU and Giấy phép Công cộng GNU Hạn chếv2

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 ECMAC#, chỉ bao gồm dấu số thường. Microsoft phát triển C# dựa trên C++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 điểm ngôn ngữ[sửa | sửa mã nguồn]

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.

C# 3.0, các đặc điểm mới[sửa | sửa mã nguồn]

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

Xem thêm về C# 3.0 tại trang web của MSDN.

.NET Framework[sửa | sửa mã nguồn]

.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 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).

Thí dụ kinh điển Hello World[sửa | sửa mã nguồn]

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:

  1. public class ExampleClass
    
  2. {
    
  3.     public static void Main()
    
  4.     {
    
  5.         System.Console.WriteLine("Hello world! ");
    
  6.     }
    
  7. }
    

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!");

Chú thích[sửa | sửa mã nguồn]

  1. ^ for async

Tham khảo[sửa | sửa mã nguồn]

  1. ^ Torgersen, Mads (27 tháng 10 năm 2008). “New features in C# 4.0”. Microsoft. Truy cập ngày 28 tháng 10 năm 2008. 
  2. ^ a ă Naugler, David (tháng 5 năm 2007). “C# 2.0 for C++ and Java programmer: conference workshop”. Journal of Computing Sciences in Colleges 22 (5). “Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.” 
  3. ^ Hamilton, Naomi (1 tháng 10 năm 2008). “The A-Z of Programming Languages: C#”. Computerworld. Truy cập ngày 12 tháng 2 năm 2010. “We all stand on the shoulders of giants here and every language builds on what went before it so we owe a lot to C, C++, Java, Delphi, all of these other things that came before us. (Anders Hejlsberg)” 
  4. ^ “Web Languages and VMs: Fast Code is Always in Fashion. (V8, Dart) - Google I/O 2013”. Google. Truy cập ngày 22 tháng 12 năm 2013. 
  5. ^ Cornelius, Barry (1 tháng 12 năm 2005). “Java 5 catches up with C#”. University of Oxford Computing Services. Truy cập ngày 18 tháng 6 năm 2014. “In my opinion, it is C# that has caused these radical changes to the Java language. (Barry Cornelius)” 
  6. ^ Lattner, Chris (3 tháng 6 năm 2014). “Chris Lattner's Homepage”. Chris Lattner. Truy cập ngày 3 tháng 6 năm 2014. “The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.” 

Liên kết ngoài[sửa | sửa mã nguồn]