TOC

This article is currently in the process of being translated into Vietnamese (~94% done).

Advanced topics:

Enumerations

Enumeration là kiểu tập hợp đặc biệt với các giá trị được đặt tên và chiều tới tập các số, thường là số nguyên. Chúng ta dùng khi bạn muốn chọn giữa các tập giá trị là hằng số, và với mỗi giá trị có thể liên quan tới một con số, chúng có thể dùng trong nhiều tình huống. Như bạn thấy trong ví dụ trên, enum được định nghĩa trên class, bên trong namespace. Điều đó có nghĩa là bạn có thể dùng enum trong mọi class của namespace.

Here is an example of a simple enumeration to show what they are all about.

public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

Tất cả các giá trị tương ứng với một số. Nếu chúng ta không thiết lập thì giá trị đầu tiên tương ứng với 0, giá trị tiếp theo tương ứng với 1 và cứ như vậy. Đoạn mã sau sẽ chứng minh điều đó cũng như chỉ cho chúng ta cách dùng một trong những giá trị trong enum:

using System;

namespace ConsoleApplication1
{
    public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

    class Program
    {
        static void Main(string[] args)
        {
            Days day = Days.Monday;
            Console.WriteLine((int)day);
            Console.ReadLine();
        }
    }
}

Đầu ra là 0 vì giá trị Monday tương ứng với 0. Rõ ràng chúng ta có thể thay đổi chỉ bằng vài dòng:

public enum Days { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

Nếu bạn thay đổi thì bạn sẽ thấy Monday giờ là 1 thay vì 0. Tất cả các giá trị khác sẽ cộng thêm 1. Bạn có thể gán số khác cho các giá trị khác. Vì ánh xạ trực tiếp tới số nên bạn dùng số để có giá trị tương ứng như sau:

Days day = (Days)5;
Console.WriteLine(day);
Console.ReadLine();

Một đặc điểm khác của enum là bạn có thể dùng chuỗi đại diện cho các giá trị. Thay đổi ví dụ trên như sau:

static void Main(string[] args)
{
    string[] values = Enum.GetNames(typeof(Days));
    foreach(string s in values)
        Console.WriteLine(s);
    
    Console.ReadLine();
}

Lớp Enum chứa các phương thức cho việc thao tác với enumeration.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!