×

Kiểu dữ liệu Nullable trong C#

Trong C#, kiểu dữ liệu Nullable cho phép bạn lưu trữ một giá trị hoặc không có giá trị (null) cho các kiểu dữ liệu giá trị (value types) như int, double, bool, etc. Điều này hữu ích khi bạn cần đại diện cho một giá trị có thể không được xác định hoặc không áp dụng trong một số ngữ cảnh nhất định.

1. Khai báo kiểu dữ liệu Nullable

Có hai cách để khai báo kiểu dữ liệu Nullable trong C#:

  1. Sử dụng Nullable<T>.
  2. Sử dụng ký hiệu ?.

Ví dụ:

int? nullableInt = null;
Nullable<int> anotherNullableInt = 5;

2. Kiểm tra giá trị Nullable

Để kiểm tra xem một biến Nullable có giá trị hay không, bạn có thể sử dụng thuộc tính HasValue hoặc so sánh với null.

int? nullableInt = null;

if (nullableInt.HasValue)
{
    Console.WriteLine("Nullable int has a value: " + nullableInt.Value);
}
else
{
    Console.WriteLine("Nullable int does not have a value.");
}

// Hoặc so sánh với null
if (nullableInt != null)
{
    Console.WriteLine("Nullable int has a value: " + nullableInt.Value);
}
else
{
    Console.WriteLine("Nullable int does not have a value.");
}

3. Truy cập giá trị Nullable

Để truy cập giá trị của một biến Nullable, bạn có thể sử dụng thuộc tính Value hoặc toán tử null-coalescing ??.

int? nullableInt = 10;

// Sử dụng thuộc tính Value
if (nullableInt.HasValue)
{
    int value = nullableInt.Value;
    Console.WriteLine("Value: " + value);
}

// Sử dụng toán tử null-coalescing
int defaultValue = nullableInt ?? -1;
Console.WriteLine("Value or default: " + defaultValue);

4. Tương tác với các kiểu không Nullable

Khi làm việc với các biến Nullable, bạn có thể cần chuyển đổi chúng thành các kiểu không Nullable. Điều này có thể được thực hiện bằng cách kiểm tra giá trị và sử dụng toán tử null-coalescing ?? hoặc phương thức GetValueOrDefault.

int? nullableInt = null;

// Sử dụng toán tử null-coalescing
int nonNullableInt = nullableInt ?? 0;
Console.WriteLine("Non-nullable int: " + nonNullableInt);

// Sử dụng phương thức GetValueOrDefault
int anotherNonNullableInt = nullableInt.GetValueOrDefault(0);
Console.WriteLine("Another non-nullable int: " + anotherNonNullableInt);

5. Các kiểu Nullable và phương thức

Khi truyền các biến Nullable vào phương thức, bạn có thể làm điều đó như với bất kỳ biến nào khác. Tuy nhiên, hãy nhớ xử lý trường hợp null bên trong phương thức.

public void ProcessNullableInt(int? number)
{
    if (number.HasValue)
    {
        Console.WriteLine("Processing number: " + number.Value);
    }
    else
    {
        Console.WriteLine("Number is null");
    }
}

// Sử dụng phương thức
ProcessNullableInt(10);  // Output: Processing number: 10
ProcessNullableInt(null);  // Output: Number is null

Tổng kết

Nullable types trong C# cung cấp một cách linh hoạt để làm việc với các giá trị có thể không xác định hoặc không áp dụng. Bạn có thể khai báo các biến Nullable, kiểm tra giá trị của chúng, truy cập giá trị, và tương tác với các kiểu không Nullable một cách dễ dàng. Điều này giúp viết mã an toàn và tránh lỗi null reference khi làm việc với các kiểu dữ liệu giá trị trong các ngữ cảnh mà giá trị có thể không được cung cấp.

Comments