C# - C Sharp: out và ref

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Nếu ta muốn thay đổi giá trị của các biến cục bộ (là biến được khai báo trong hàm) từ một hàm khác thì ta có thể sử dụng out hoặc ref.

Ta sử dụng từ khóa out nếu như biến cục bộ không mang giá trị trước đó (giá trị này có thể được gán hoặc được nhập vào trước đó).

Từ khóa out sẽ được đặt cả ở phần đối số và phần tham số.

Dưới đây là ví dụ sử dụng từ khóa out.

namespace Demo1
{
  internal class demo1
  {
    static void Input(out int a, out int b)
    {
      Console.Write("Input a: ");
      a = int.Parse(Console.ReadLine());
      Console.Write("Input b: ");
      b = int.Parse(Console.ReadLine());
    }

    static void Main(string[] args)
    {
      int a, b; //khai báo biến nguyên a, b

      Input(out a, out b);

      Console.WriteLine($"After inputting, a = {a}, b = {b}");
    }
  }
}

Trong ví dụ trên: Ta thấy rằng a và b được khai báo trong hàm Main và không mang bất kỳ giá trị nào, khi đó ở lời gọi hàm Input bạn thấy ta sẽ dùng từ khóa out cho a và b, và ở định nghĩa hàm Input ta cũng

dùng từ khóa out cho cả a và b.

Một output khi chạy ví dụ trên:

Input a: 5
Input b: 10
After inputting, a = 5, b = 10

Ta sử dụng từ khóa ref nếu như biến cục bộ đã mang giá trị (giá trị này có thể được gán hoặc được nhập vào trước đó).

Dưới đây là ví dụ sử dụng từ khóa ref.

namespace Demo1
{
  internal class demo1
  {
    static void Input(out int a, out int b)
    {
      Console.Write("Input a: ");
      a = int.Parse(Console.ReadLine());
      Console.Write("Input b: ");
      b = int.Parse(Console.ReadLine());
    }

    static void Swap(ref int a, ref int b)
    {
      int temp;
      temp = a;
      a = b;
      b = temp;
    }

    static void Main(string[] args)
    {
      int a, b; //khai báo biến nguyên n

      Input(out a, out b);

      Console.WriteLine($"After inputting, a = {a}, b = {b}");

      Swap(ref a, ref b);

      Console.WriteLine($"After swapping, we get: a = {a}, b = {b}");
    }
  }
}

Trong ví dụ trên: Nhiệm vụ của hàm Swap là hoán đổi giá trị của a và b cho nhau trong hàm Main. Vì thông qua hàm Input(out a, out b) ta sẽ có được a và b sẽ mang giá trị, cho nên ở lời gọi hàm Swap ta sẽ sử dụng từ khóa ref cho a và b, và ta cũng phải sử dụng từ khóa ref cho cả phần định nghĩa hàm Swap nữa.

Một output khi chạy ví dụ trên:

Input a: 5
Input b: 10
After inputting, a = 5, b = 10
After swapping, we get: a = 10, b = 5

» Tiếp: Biến global và biến local
« Trước: Hàm (Function)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!