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

Truyền tham số bằng tham chiếu (by reference) trong C#


Tham số tham chiếu (reference parameter) là tham chiếu đến vị trí bộ nhớ của một biến. Khi truyền bằng tham chiếu, không tạo vị trí bộ nhớ mới cho các tham số này. Chúng đại diện cho cùng vị trí bộ nhớ với đối số thực tế.

Ví dụ

using System;

namespace CalculatorApplication
{
    class NumberManipulator
    {
        // Dùng ref cho cả hai tham số
        public void Swap(ref int x, ref int y)
        {
            int temp;
            temp = x;
            x = y;
            y = temp;
        }
        
        static void Main(string[] args)
        {
            NumberManipulator n = new NumberManipulator();
            int a = 100;
            int b = 200;
            
            Console.WriteLine("Trước hoán đổi, a = {0}", a);
            Console.WriteLine("Trước hoán đổi, b = {0}", b);
            
            // Phải dùng ref khi gọi
            n.Swap(ref a, ref b);
            
            Console.WriteLine("Sau hoán đổi, a = {0}", a);
            Console.WriteLine("Sau hoán đổi, b = {0}", b);
            Console.ReadLine();
        }
    }
}

Kết quả

Trước hoán đổi, a = 100
Trước hoán đổi, b = 200
Sau hoán đổi, a = 200
Sau hoán đổi, b = 100

Từ khóa ref vs out

Đặc điểmrefout
Khởi tạo trước khi gọiBắt buộcKhông bắt buộc
Gán giá trị trong methodTùy chọnBắt buộc trước khi return
Mục đíchĐọc & ghiChỉ ghi (output)

Ví dụ out

bool TryParseInt(string s, out int result)
{
    return Int32.TryParse(s, out result);
}

// Gọi
int value;
if (TryParseInt("123", out value))
    Console.WriteLine(value); // 123

C# 7+: out variable inline

if (int.TryParse("456", out int value))
    Console.WriteLine(value);