Lập trình với C#: Chương 2 (Phần X)

Enumerations

Phương án thay thế hằng là enumeration (liệt kê), gồm một tập hợp những hằng đuợc đặt tên.

Chúng ta định nghĩa một enumeration giống như sau :

public enum TimeOfDay
{
    Morning = 0,
    Afternoon = 1,
    Evening = 2
}

Ví dụ sau sử dụng enumeration:

class EnumExample
{
    public enum TimeOfDay
    {
        Morning = 0,
        Afternoon = 1,
        Evening = 2
    }
    public static int Main()
    {
        WriteGreeting(TimeOfDay.Morning);
        return 0;
    }

    static void WriteGreeting(TimeOfDay timeOfDay)
    {
        switch(timeOfDay)
        {
            case TimeOfDay.Morning: 
                Console.WriteLine(“Good morning!”); 
                break; 
            case TimeOfDay.Afternoon: 
                Console.WriteLine(“Good afternoon!”); 
                break; 
            case TimeOfDay.Evening: 
                Console.WriteLine(“Good evening!”); 
                break; 
            default: 
                Console.WriteLine(“Hello!”); 
                break; 
        }
    }
}

Bạn có thể nhận được chuỗi đại diện của một enum. Thí dụ sử dụng enum TimeOfDay sau:

TimeOfDay time = TimeOfDay.Afternoon;
Console.WriteLine(time.ToString());

Kết quả sẽ viết ra chuỗi Afternoon.

Bạn có thể nhận được giá trị enum từ chuỗi.

TimeOfDay time2 = (TimeOfDay) Enum.Parse(typeof(TimeOfDay), “afternoon”, true);
Console.WriteLine((int)time2);

Namespaces

Namespace cung cấp cho ta cách mà chúng ta tổ chức quan hệ giữa các lớp và các kiểu khác.Namespace( địa bàn hoạt động của các tên) là cách
mà .NET tránh né việc các tên lớp, tên biến, tên hàm. . đụng độ vì trùng tên giữa các lớp.

namespace CustomerPhoneBookApp
{
    using System;

    public struct Subscriber
    {
        // Code for struct here…
    }
}

Ta có thể khai báo nhiều namespace như sau:

namespace Wrox
{
    namespace ProCSharp
    {
        namespace Basics
        {
             class NamespaceExample
             {
                  // Code for the class here…
             }
         }
    }
}

Mỗi một namespace được soạn một tên.Như vậytên đầy đủ của ProCSharp namespace là Wrox.ProCSharp, và tên đầy dủ của lớp NamespaceExample là Wrox.ProCSharp.Basics.NamespaceExample

Chúng ta cũng dùng cấu trúc này để tổ chức namespace trong định nghĩa namespace.Nên đoạn code có thể víêt như sau :

namespace Wrox.ProCSharp.Basics
{
    class NamespaceExample 
    {
          // Code for the class here…
    }
}

Câu lệnh using

Từ khoá using giúp bạngiảm thiểu việc phải gõ những namespace trước các hàm hành sự hoặc thuộc tính, thí dụ sau sử dụng namespace Wrox.ProCSharp thay vì phải gõ đầy đủ đường dẫn

using Wrox.ProCSharp;

class Test
{
    public static int Main()
    {
        Basics.NamespaceExample NSEx = new Basics.NamespaceExample();
        return 0;
     }
}

Bí danh Namespace

Một cách sử dụng khác từ khoá using là gán những bí danh cho các lớp và namespace. Nếu bạn có 1 namespace dài lê thê mà bạn muốn quy chiếu nhiều chỗ trên đoạn mã . bạn có thể gán một alias cho namespace.

Cú pháp :

using alias = NamespaceName;

Chúng ta sử dụng đối tượng này để trả về tên của lớp namespace thí dụ sau Introduction được đặt cho Wrox.ProCSharp.Basics namespace đại diện cho đối tượng NamespaceExample Đối tượng này có một phương thức GetNamespace(), sử dụng phương thức GetType() mà mọi lớp đều có thể truy xuất một đối tượng Type tượng trương cho kiểu dữ liệu của lớp. Chúng ta dùng đối tượng này để trả về tên namespace cho lớp.

using System;
using Introduction = Wrox.ProCSharp.Basics;
class Test
{
    public static int Main()
    {
        Introduction.NamespaceExample NSEx =
        new Introduction.NamespaceExample();
        Console.WriteLine(NSEx.GetNamespace());
        return 0;
    }
}

namespace Wrox.ProCSharp.Basics

    class NamespaceExample
    {
        public string GetNamespace()
        {
            return this.GetType().Namespace;
        }
    }
}