Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Toán tử default trong C#


Giới thiệu

Toán tử default trả về giá trị mặc định của bất kỳ kiểu nào: value type (0, false, ...) hoặc reference type (null). Từ C# 7.1, có thể dùng default literal (type inference).

Cú pháp

// Cũ
int val1 = default(int);
long val2 = default(long);
bool val3 = default(bool);

// Mới (C# 7.1+)
int val1 = default;
long val2 = default;
bool val3 = default;

Ví dụ hoàn chỉnh

using System;

public class Demo
{
    public static void Main()
    {
        int val1 = default(int);
        long val2 = default(long);
        bool val3 = default(bool);
        Console.WriteLine(val1); // 0
        Console.WriteLine(val2); // 0
        Console.WriteLine(val3); // False
    }
}

Kết quả

0
0
False

Ứng dụng trong Generic

public class Repository
{
    public T GetDefault() => default; // T có thể là value hoặc reference type
}

public T FindOrDefault(int id)
{
    var item = _db.Find(id);
    return item ?? default; // Trả về default(T) nếu không tìm thấy
}

default vs new T()

Biểu thứcValue TypeReference Type
default(T)Zero-initialized (nhanh, không gọi constructor)null
new T()Gọi constructor không tham sốGọi constructor, cấp phát heap

Lưu ý

  • default literal chỉ dùng nơi compiler suy ra được kiểu (assignment, return, argument, ...).
  • Không dùng được: var x = default; (không suy ra kiểu).
  • Trong switch expression: case null: return default;.