Sự khác nhau giữa C# và C/C++

Một phần của tài liệu Nghiên cứu & thực hành với phần mềm LabView tại trung tâm nghiên cứu MICA (Trang 70 - 71)

Mã của C# rất quen thuộc với những ngời đã lập trình C và C++, tuy nhiên vẫn có một vài khác biệt.

I.1. Về môi trờng

C# chạy trên môi trờng là nền .NET, điều này có nghĩa là có nhiều thứ đợc thực hiện tự động, không cần sự điều khiển của ngời lập trình, cụ thể nh sau:

 Việc xoá bỏ các đối tợng đợc thực hiện tự động bởi GC khi không còn bộ nhớ để cấp phát. GC cũng có thể gọi để thực hiện thu hồi bộ nhớ trong những trờng hợp cá biệt. Trong khi đó, ngời lập trình C++ luôn phải đảm nhiệm việc quản lí bộ nhớ.

 Hoàn toàn không có kiểu con trỏ trong ngôn ngữ C#. Thay vào đó là kiểu dữ liệu tham trị, có thể hoạt động nh con trỏ nhng dễ dàng hơn.

 Mã nguồn C# đợc dịch ra ngôn ngữ trung gian IL, trong khi mã nguồn C++ đợc dịch ra mã máy nên không độc lập với nền nh C#. Các thành phần của một ứng dụng đợc đóng gói trong một assembly cùng với các thông tin metadata về ứng dụng, nó cho phép CLR nạp đủ các thành phần của một ứng dụng C# vào chạy. Đối với C++, các thành phần chỉ đợc định nghĩa lỏng lẻo trong các file .h, tuy nhiên việc mất mát các file .h cũng rất hay xảy ra, khi đó không dịch đợc chơng trình C++. Khác biệt trên đã chứng tỏ một điều: một khi ứng dụng C# đã chạy thì nó luôn chạy.

 Việc đa một ứng dụng C# vào thực thi cần nhiều thao tác hơn ứng dụng C++ nên cần nhiều thời gian hơn, khó phù hợp với các máy có cấu hình thấp.

 Chơng trình C# có khả năng bắt các lỗi runtime và xử lí hơn là chỉ trả về mã lỗi nh C/C++.

Các câu lệnh của C# rất giống với C/C++, tuy nhiên cũng có thể kể ra một số khác biệt:

 Từ khoá new có nghĩa là tạo ra một bản copy của một kiểu dữ liệu hay đối tợng. Đối tợng sẽ đợc cấp phát ở vùng heap nều nó là kiểu tham biến, cấp phát ở vùng stack nếu là kiểu tham trị.

 Tất cả các câu lệnh liên quan đến kiểm tra lô - gíc đều cần một biến kiểu boolean và không thể chuyển kiểu từ boolean sang int hay ngợc lại.

 C# có thêm câu lệnh foreach nhằm liệt kê các thành phần trong một tập hợp để thực hiện phép lặp.

 Các từ khoá checked và unchecked trong C# đợc sử dụng để kiểm tra xem những thao tác số học có bị tràn số hay không.

 Định nghĩa lại phép gán không đợc khuyến khích trong C#.

I.3. Về tổ chức chơng trình

C# không có các file header, tất cả các mã đều phải viết trong một lớp hay đơn vị tơng đơng và thuộc về lớp đó. C# không yêu cầu thứ tự khai báo, định nghĩa các biến, các lớp.

Tuy nhiên trong C# cũng không có một số tính năng thuận tiện có trong C++:

 Đa thừa kế

 hàm hằng, toán tử phạm vi, tham biến hằng, tham biến ngầm định.

 Khởi tạo sao chép

 Define

 Typedef

Một phần của tài liệu Nghiên cứu & thực hành với phần mềm LabView tại trung tâm nghiên cứu MICA (Trang 70 - 71)