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

Trả về mảng từ phương thức trong C#


Giới thiệu

Phương thức có thể trả về mảng (array) bằng kiểu trả về T[]. Mảng được tạo trong phương thức và trả về tham chiếu.

Ví dụ cơ bản

static string[] Display()
{
    string[] str = new string[5];
    str[0] = "My"; str[1] = "name"; str[2] = "is"; str[3] = "Brad"; str[4] = "Pitt";
    return str;
}

// Gọi
Console.WriteLine(string.Join(" ", Display()));

Ví dụ hoàn chỉnh

using System;

public class Demo
{
    public static void Main()
    {
        Console.WriteLine(string.Join(" ", Display()));
    }

    static string[] Display()
    {
        string[] str = new string[5];
        str[0] = "My"; str[1] = "name"; str[2] = "is"; str[3] = "Brad"; str[4] = "Pitt";
        return str;
    }
}

Kết quả

My name is Brad Pitt

Lưu ý quan trọng

  • Trả về tham chiếu đến mảng trên heap - không copy, hiệu suất tốt.
  • Caller có thể sửa đổi mảng trả về (nếu không muốn -> trả về copy/ReadOnlyCollection).
  • Có thể trả về mảng rỗng: return Array.Empty(); hoặc return new string[0];.
  • Tránh trả về null cho array return type - trả về empty array thay thế.

Ví dụ trả về mảng số

static int[] GetNumbers()
{
    return new int[] { 1, 2, 3, 4, 5 };
}

// Hoặc collection expression (C# 12+)
static int[] GetNumbers() => [1, 2, 3, 4, 5];

Span/Memory alternative (.NET Core)

Tránh cấp phát mảng cho slice/subarray:

// Trả về Span (ref struct, chỉ dùng stack-only context)
// Hoặc Memory cho heap
public Memory GetSlice(int start, int count) => _array.AsMemory(start, count);