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.Emptyhoặ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 MemoryGetSlice(int start, int count) => _array.AsMemory(start, count);