[Programming in C#] Bài 1: Giới thiệu tổng quan về C#

1. Những hạn chế của các ngôn ngữ lập trình C/C++
- Khó khăn cho những người bắt đầu học lập trình.
- Không thể kiểm tra hoạt động của code cho đến tận lúc code đã được biên dịch.
- Khó khăn trong việc gỡ lỗi bởi có rất ít các công cụ gỡ lỗi và đa số là đắt.
- Thời gian phát triển ứng dụng với các ngôn ngữ này là lâu.
- Kết nối với CSDL phức tạp.
- Các khó khăn trong việc chỉnh sửa dữ liệu.
- Khó khăn trong việc thực hiện.
- Không có bất kì một framework.

2. Cơ bản về .NET Framework
- NET Framework là một thành phần cơ bản của Windows cho việc xây dựng và chạy các ứng dụng viết bởi các ngôn ngữ lập trình mới (ứng dụng thế hệ kế tiếp).
- NET Framework được thiết kế để:

  • Cung cấp một môi trường nhất quán cho lập trình hướng đối tượng.
  • Tối ưu hóa việc phát triển phần mềm và sự xung đột phiên bản bằng việc cung cấp một môi trường thực hiện code.
  • Cung cấp môi trường thực thi code an toàn hơn.
  • Cung cấp trải nghiệm (experience) nhất quán cho những người phát triển trong việc tạo ra các kiểu ứng dụng khác nhau từ các ứng dụng trên nền tảng Windows, các ứng dụng trên nền tảng Web cho đến các ứng dụng trên nền tảng thiết bị di động, các ứng dụng nhúng…


3. Các thành phần của .NET Framework

NET Framework bao gồm 2 thành phần chính:
- CLR (Common Language Runtime – Môi trường quản lý ngôn ngữ chung): đây là thành phần cốt lỗi (xương sống – backbone) của NET Framework thực hiện các chức năng sau:

  • Quản lý bộ nhớ.
  • Thực hiện code.
  • Xử lý lỗi.
  • Xác nhận sự an toàn của code.
  • Thu gom rác.

- Framework Class Library (FCL): là một tập hợp các kiểu dữ liệu có khả năng sử dụng lại (tập hợp các lớp) và hướng đối tượng hoàn toàn, được sử dụng để phát triển các ứng dụng từ những ứng dụng dòng lệnh truyền thống cho đến những ứng dụng với giao diện đồ họa.

4. Các tính năng cơ bản của ngôn ngữ lập trình C#

- C# là một ngôn ngữ lập trình hướng đối tượng thuần túy (pure object oriented programming).
- Kiểm tra an toàn kiểu.
- Thu gom rác tự động: giảm bớt gánh nặng cho người lập trình viên trong việc phải viết các đoạn code thực hiện cấp phát và giải phóng bộ nhớ.
- Hỗ trợ các chuẩn hóa được ra bởi tổ chức ECMA (European Computer Manufactures Association).
- Hỗ trợ các phương thức và các kiểu phổ quát (chung).

5. Các ứng dụng của C#
C# có thể sử dụng để viết các kiểu ứng dụng khác nhau:
- Các ứng game.
- Các ứng dụng cho doanh nghiệp.
- Các ứng dụng cho thiết bị di động: PC Pocket, PDA , cell phone.
- Các ứng dụng quản lý đơn giản: ứng dụng quản lý thư viện, quản lý thông tin cá nhân…
- Các ứng dụng phân tán phức tạp trải rộng qua nhiều thành phố, đất nước.

6. Các lợi ích của C#
- Cross Language Support: hỗ trợ khả năng chuyển đổi dễ dàng giữa các ngôn ngữ.
- Hỗ trợ các giao thức Internet chung.
- Triển khai đơn giản.
- Hỗ trợ tài liệu XML: các chú thích XML có thể được thêm vào các đoạn code và sau đó có thể được chiết xuất để làm tài liệu cho các đoạn code để cho phép các lập trình viên khi sử dụng biết được ý nghĩa của các đoạn code đã viết.

6. Môi trường phát triển tích hợp Visual Studio .NET 2005
- VS 2005 là một tập hợp các công cụ phát triển cho việc xây dựng các ứng dụng desktop với hiệu năng cao, các ứng dụng cho thiết bị di động, các dịch vụ Web, các ứng dụng Web. Ngoài ra VS 2005 cũng được sử dụng để làm đơn giản hóa quá trình phát triển nhóm, triển khai cài đặt các ứng dụng enterprise.
- VS 2005 cung cấp các lợi ích mở rộng cho việc phát triển các ứng dụng:

  • Nâng cao tính sản phẩm.
  • Phát triển các ứng dụng cho NET Framework 2.0.
  • Phát triển các ứng dụng cho các thiết bị cầm tay với .NET Framework Compact 2.0.

7. Các phiên bản của VS 2005
- Phiên bản Express: đây là phiên bản miễn phí và phù hợp với các cá nhân, tổ chức sử dụng với mục đích nghiên cứu.
- Phiên bản Standard: phiên bản này có nhiều tính năng hơn so với phiên bản Express và với giá thành thấp, phù hợp với các tổ chức nhỏ.
- Phiên bản Professional: phiên bản này có đầy đủ tất cả các tính năng tuy nhiên hỗ trợ số lượng người dùng hạn chế phù hợp với các tổ chức vừa.
- Phiên bản Team System: đây là phiên bản có đầy đủ tính năng nhất và hỗ trợ tối đa cho việc phát triển ứng dụng nhóm, có giá thành cao nhất.

Tách Emails từ một chuối

public string[] ExtractEmails(string str)
{
    string RegexPattern = @"\b[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}\b";

    // Find matches
    System.Text.RegularExpressions.MatchCollection matches
        = System.Text.RegularExpressions.Regex.Matches(str, RegexPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

    string[] MatchList = new string[matches.Count];

    // add each match
    int c = 0;
    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        MatchList[c] = match.ToString();
        c++;
    }

    return MatchList;
}

 

 

Tách URLs từ một chuỗi

public string[] ExtractURLs(string str)
{
    // match.Groups["name"].Value - URL Name
    // match.Groups["url"].Value - URI
    string RegexPattern = @"<a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>"

    // Find matches.
    System.Text.RegularExpressions.MatchCollection matches
        = System.Text.RegularExpressions.Regex.Matches(str, RegexPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

    string[] MatchList = new string[matches.Count];

    // Report on each match.
    int c = 0;
    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        MatchList[c] = match.Groups["url"].Value;
        c++;
    }

    return MatchList;
}

Remove HTML Tags

 

public string StripHTML(string str)
{
    return System.Text.RegularExpressions.Regex.Replace(str, @"<(.|\n)*?>", string.Empty);
}

 

Extract Numeric values

public string[] ExtractNumbers(string str)
{
    // Find matches
    System.Text.RegularExpressions.MatchCollection matches
        = System.Text.RegularExpressions.Regex.Matches(str, @"(\d+\.?\d*|\.\d+)");

    string[] MatchList = new string[matches.Count];

    // add each match
    int c = 0;
    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        MatchList[c] = match.ToString();
        c++;
    }

    return MatchList;
}