Lập trình C#

Cách truyền tham trị, tham chiếu trong C#

Cách truyền tham trị, tham chiếu trong C#
Được viết bởi Minh Hoàng

Series lập trình C#, ngôn ngữ lập trình hiện đại và mạnh mẽ.

Trong bài này, kiến thức tiếp theo chúng ta sẽ tìm hiểu là cách truyền tham trị, tham chiếu trong C#:

  1. Tham trị, tham chiếu là gì?
  2. Cách sử dụng tham trị, tham chiếu
1. Tham trị, tham chiếu là gì?

Như chúng ta đã biết một biến thì sẽ có giá trịđịa chỉ ô nhớ trên máy tính để lưu giá trị của biến. Khi chúng ta truyền tham số cho một phương thức là:

  • Tham trị: có nghĩa là truyền giá trị của biến. Mọi xử lý tính toán trong phương thức khi kết thúc thì không làm thay đổi giá trị của biến tham số truyền vào.
  • Tham chiếu: có nghĩa là truyền trực tiếp địa chỉ ô nhớ của biến. Chính vì thế mọi tính toán trong phương thức sẽ làm thay đổi giá trị của biến tham số truyền vào khi phương thức kết thúc.
2. Cách sử dụng tham trị, tham chiếu
#1. Cách sử dụng Tham trị
#1. Cách sử dụng Tham trị
using System;

namespace MinhHoangBlog
{
	class Program
	{
		static void Main(string[] args)
		{
			// Khai báo 2 số để tìm max
			int n1 = 100;
			int n2 = 200;

			// Truyền 2 biến n1, n2 theo kiểu Tham trị
			int max = FindMax( n1, n2 );

			Console.WriteLine( "Before n1 = {0}", n1 );
			Console.WriteLine( "Before n2 = {0}", n2 );

			Console.WriteLine( "Max number of {0}, {1} is {2}", n1, n2, max );

			Console.WriteLine( "After n1 = {0}", n1 );
			Console.WriteLine( "After n2 = {0}", n2 );

			Console.WriteLine( "Gia tri cua 2 bien n1, n2 khong thay doi." );

			Console.ReadKey();
		}

		public static int FindMax(int number1, int number2)
		{
			int max;
			if (number1 > number2)
				max = number1;
			else
				max = number2;
			return max;
		}
	}
}
Kết quả chương trình

Kết quả chương trình

#2. Cách sử dụng Tham chiếu
#2. Cách sử dụng Tham chiếu

Với truyền tham chiếu – Chúng ta sẽ sử dụng từ khóa ref hoặc out:

  • Khi dùng ref: biến phải được khởi tạo trước (x = 5), rồi mới truyền cho phương thức.
  • Khi dùng out: biến (x) không cần khởi tạo trước khi truyền vào phương thức. Nhưng bên trong phương thức bắt buộc phải có giá trị gán cho biến (x = 5).
  • Khi gọi và khi khai báo phương thức đều bắt buộc phải có kèm theo ref hoặc out trước tên biến muốn truyền theo kiểu tham chiếu.
using System;

namespace MinhHoangBlog
{
	class Program
	{
		static void Main(string[] args)
		{
			// Khai báo và khởi tạo
			int a = 100;
			int b = 99;

			Console.WriteLine( "Before swap: a = {0}, b = {1}", a, b );

			// Truyền 2 biến a, b theo kiểu Tham chiếu, dùng từ khóa [ref]
			Swap( ref a, ref b );
			Console.WriteLine( "After  swap: a = {0},  b = {1}", a, b );

			// Chỉ khai báo
			int x;

			// Truyền biến x theo kiểu Tham chiếu, dùng từ khóa [out]
			GetValue( out x );

			Console.WriteLine( "Now, value of x = {0}", x );

			Console.ReadKey();
		}

		// Method hoán vị 2 số Swap, dùng biến tham chiếu [ref]
		public static void Swap(ref int a, ref int b)
		{
			int tmp;
			tmp = a;
			a = b;
			b = tmp;
		}

		// Method GetValue, dùng biến tham chiếu [out]
		public static void GetValue(out int x)
		{
			x = 5;
		}
	}
}
Kết quả chương trình

Kết quả chương trình

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!


Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp người đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

3
Bình luận của bạn

avatar
3 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Kiểu mảng array trong lập trình C# - Minh Hoàng Blog | Cùng nhau chia sẻ kiến thức lập trình, tự học tiếng Nhật online và cuộc sống Nhật Bản!Kiểu enum trong lập trình C# - Minh Hoàng Blog | Cùng nhau chia sẻ kiến thức lập trình!Các cách chuyển đổi kiểu dữ liệu trong C# - Hoàng Ngọc Minh Blog | Cùng nhau chia sẻ kiến thức lập trình! Recent comment authors
Mới nhất Cũ nhất Thích nhiều nhất
trackback

[…] Tham số thứ hai là biến sẽ chứa giá trị sau khi được chuyển đổi đi kèm với từ khóa out, để thông báo rằng biến thứ hai sẽ truyền theo kiểu tham chiếu (Xem bài Cách truyền tham trị, tham chiếu trong C#) […]

trackback

[…] enum là một kiểu tham trị giống như kiểu […]

trackback

[…] từ lớp System.Array (có nguồn gốc từ System.Object). Vì vậy, trong C# mảng thuộc kiểu tham chiếu, được quản lý và cấp phát trên vùng nhớ Heap. Xem thêm: Array Types in .NET (link […]

Cách truyền tham trị, tham chiếu trong C#

by Minh Hoàng Time to read: 3 min
3