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

Truyền mảng vào phương thức trong C#


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})