Truyền mảng vào phương thức như một tham số (argument) của phương thức.
Ví dụ
using System;
namespace ArrayApplication
{
class MyArray
{
// Phương thức nhận mảng và kích thước, trả về trung bình
double GetAverage(int[] arr, int size)
{
int i;
double avg;
int sum = 0;
for (i = 0; i < size; ++i)
sum += arr[i];
avg = (double)sum / size;
return avg;
}
static void Main(string[] args)
{
MyArray app = new MyArray();
// Mảng 5 phần tử
int[] balance = new int[] { 1000, 2, 3, 17, 50 };
// Truyền mảng vào phương thức
double avg = app.GetAverage(balance, 5);
// Xuất kết quả
Console.WriteLine("Giá trị trung bình: {0}", avg);
Console.ReadKey();
}
}
}
Kết quả
Giá trị trung bình: 214.4
Giải thích quan trọng
- Mảng là reference type - truyền tham chiếu đến mảng gốc
- Phương thức có thể thay đổi nội dung mảng gốc
- Nhưng không thể thay đổi tham chiếu mảng (gán mảng mới cho tham số) - trừ khi dùng
ref
Ví dụ thay đổi mảng gốc
void ModifyArray(int[] arr)
{
arr[0] = 999; // Thay đổi phần tử - ảnh hưởng mảng gốc
arr = new int[] { 1, 2, 3 }; // Chỉ thay đổi tham chiếu cục bộ - KHÔNG ảnh hưởng mảng gốc
}
Truyền mảng params (C# params)
double GetAverage(params int[] numbers)
{
return numbers.Average();
}
// Gọi: GetAverage(1, 2, 3, 4, 5) hoặc GetAverage(new int[] {1,2,3})