CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Hàm trong c#

Khi mình muốn thực thi một đoạn code nào nó nhiều lần, thay vì phải copy đi copy lại đoạn code đó nhiều lần, dẫn đến chương trình chúng ta bị trùng lặp code rất nhiều, trong c# có function cho phép chúng ta thực thi đoạn code nào đó nhiều lần mà không cần phải copy lại code, mà chỉ cần gọi tên hàm.

Vậy cách sử dụng hàm (function) trong c# như thế nào? Có bao nhiêu cách để truyền tham số vào hàm? Chúng ta cùng tìm hiểu trong nội dung tiếp theo.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Hàm trong c#

Hàm (function) trong C# dùng để thực thi một khối lệnh nào đó.

Cú pháp
<Quyền truy cập> <Kiểu trả về> Tên hàm (<Tham số>)  
{  
      // Thân hàm
      // Giá trị trả về;
}  

Trong đó:

  • Tên hàm: Nó là một tên duy nhất được sử dụng để gọi hàm. Ví dụ: getValue(), Add(int a, int b)...
  • Kiểu trả về: Nó được sử dụng để chỉ rõ kiểu dữ liệu của hàm được trả về.
  • Thân hàm: Nó là khối lệnh sẽ được thực thi khi hàm được gọi.
  • Quyền truy cập: Nó được sử dụng để xác định khả năng truy cập hàm trong ứng dụng.
  • Tham số: Nó là một danh sách các tham số mà chúng ta truyền vào khi gọi hàm
Lưu ý: Kiểu trả về, quyền truy cập và tham số là không bắt buộcphải có khi định nghĩa hàm

2. Ví dụ

Hàm không có tham số và kiểu trả về

Ví dụ
using System;

namespace ConsoleApp2
{
	class Program
	{
		void print()
		{
			Console.WriteLine("------muc dich ham chi in chu ra man hinh khong can tham so va kieu tra ve-----");
		}
		static void Main(string[] args)
		{
			Console.WriteLine("Goi ham print:");
			Program p = new Program();
			p.print();
			Console.ReadKey();
		}
	}
}

Và kết quả sau khi thực thi đoạn code kết:

csharp function ex1 PNG

Hàm có tham số nhưng không có kiểu trả về

Ví dụ
using System;

namespace ConsoleApp2
{
	class Program
	{
		void print(string name)
		{
			Console.WriteLine("---------------Xin chao: " + name + "---------------------");
		}
		static void Main(string[] args)
		{
			Console.WriteLine("Goi ham print:");
			Program p = new Program();
			p.print("Viet Tut");
			Console.ReadKey();
		}
	}
}

Và kết quả sau khi thực thi đoạn code trên:

csharp function ex2 PNG

Hàm có tham số và có kiểu trả về

Ví dụ
using System;

namespace ConsoleApp2
{
	class Program
	{
		string print(string name)
		{
			return "-------------Xin chao: " + name + "--------------";
		}
		static void Main(string[] args)
		{
			Console.WriteLine("Goi ham print:");
			Program p = new Program();
			string name = p.print("Viet Tut");
			Console.WriteLine(name);
			Console.ReadKey();
		}
	}
}

Và kết quả sau khi thực thi đoạn code trên:

csharp function ex3 PNG

Như vậy là chúng ta đã cùng tìm hiểu về hàm là gì, ví dụ một số loại hàm. Phần tiếp theo mình cùng tìm hiểu một phần quan trong đó là cách gọi hàm có tham số.

3. Cách gọi hàm có tham số

Trong c# có 3 cách gọi hàm đó là gọi bằng giá trị (call by value), gọi bằng tham chiếu (call by Reference) và dùng tham số out.

Gọi bằng giá trị (call by value)

Trong C#, gọi bằng giá trị tức là tham số truyền vào là bản sao của giá trị gốc, vì vậy dù cho bên trong thân hàm có thay đổi giá trị của tham số truyền vào thì sau khi kết thúc gọi hàm thì giá trị gốc vẫn không thay đổi.

Trong ví dụ sau, chúng ta truyền tham số giá trị khi gọi hàm:

Ví dụ
using System;

namespace ConsoleApp2
{
	class Program
	{
		public void Print(int val)
		{
			val += val;  
			Console.WriteLine("Gia tri ben trong ham: " + val);  
		}

		static void Main(string[] args)
		{
			int val = 100;
			Program p = new Program();
			Console.WriteLine("Gia tri truoc khi goi ham: " + val);
			p.Print(val);            
			Console.WriteLine("Gia tri sau khi goi ham: " + val);
			Console.ReadKey();
		}
	}
}

Và kết quả sau khi thực thi đoạn code trên:

csharp function ex4 PNG

Gọi bằng tham chiếu (call by Reference)

C # cung cấp một từ khóa ref để truyền đối số dưới dạng tham chiếu. Tức là tham số truyền vào bằng địa chỉ ô nhớ của biến gốc vì vậy bên trong thân hàm thay đổi giá trị tham số truyền vào thì giá trị gốc cũng thay đổi theo..

Ví dụ
using System;

namespace ConsoleApp2
{
	class Program
	{
		public void Print(ref int val)
		{
			val += val;  
			Console.WriteLine("Gia tri ben trong ham: " + val);  
		}

		static void Main(string[] args)
		{
			int val = 100;
			Program p = new Program();
			Console.WriteLine("Gia tri truoc khi goi ham: " + val);
			p.Print(ref val);            
			Console.WriteLine("Gia tri sau khi goi ham: " + val);
			Console.ReadKey();
		}
	}
}

Và kết quả sau khi thực thi đoạn code trên:

csharp function ex5 PNG

Tham số out

Tham số out giống như kiểu tham chiếu, ngoại trừ việc nó không yêu cầu biến khởi tạo trước khi truyền.

Ví dụ
using System;

namespace ConsoleApp2
{
	class Program
	{
		public void Print(out int val)
		{
			int val1 = 100;
			val = val1;  
			Console.WriteLine("Gia tri ben trong ham: " + val);  
		}

		static void Main(string[] args)
		{
			int val = 20; ;
			Program p = new Program();
			Console.WriteLine("Gia tri truoc khi goi ham: " + val);
			p.Print(out val);            
			Console.WriteLine("Gia tri sau khi goi ham: " + val);
			Console.ReadKey();
		}
	}
}

Và kết quả sau khi thực thi đoạn code trên:

csharp function ex6 PNG

Như vậy mình chỉ cần phân biệt refout như sau:

ref

  • Giá trị phải được khởi tạo trước
  • Bên trong thân hàm có thể đọc vào thay đổi giá trị nó
out
  • Giá trị không được khởi tạo trước và bên trong thân hàm không đọc được nó cho đến khi nó được gán giá trị
  • Hàm phải gán giá trị cho biến out trước khi trả giá trị về

4. Lời kết

Như vậy là mình đã tìm hiểu xong hàm trong c#. Trong bài này chúng ta chỉ cần nhớ một điểm cốt lõi nhất là 3 cách truyền tham số vào hàm đó là truyền bằng giá trị (call by value), truyền bằng tham chiếu (call by reference) và dùng tham số out.
Chúc các bạn vận dụng tốt. Cảm ơn các bạn đã đọc bài viết.
 

Cùng chuyên mục:

Cách dùng Stack (ngắn xếp) trong C#

Cách dùng Stack (ngắn xếp) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính và phương thức của Stack…

Cách dùng Queue (hàng đợi) trong C#

Cách dùng Queue (hàng đợi) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính, phương thức của Queue, cũng…

Cách dùng Hashtable (bảng băm) trong C#

Cách dùng Hashtable (bảng băm) trong C#

Cụ thể sẽ tìm hiểu Hashtable là gì? các đặc điểm của nó, cùng với…

Sự kiện Enter và Leave trong C# Winforms

Sự kiện Enter và Leave trong C# Winforms

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Một câu hỏi được đặt ra là làm cách nào để có thể phát hiện…

Sắp xếp trộn trong C# (Merge Sort)

Sắp xếp trộn trong C# (Merge Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp xếp các ..

Sắp xếp nổi bọt trong C# (Bubble Sort)

Sắp xếp nổi bọt trong C# (Bubble Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp ...

Cách in ra hình tam giác ký tự * trong C#

Cách in ra hình tam giác ký tự * trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Cách tính tổng các số chẵn từ 1 đến N trong C#

Cách tính tổng các số chẵn từ 1 đến N trong C#

Trước khi đi vào viết chương trình, chúng ta cùng tìm hiểu qua số chẵn…

Cách tính tổng các số lẻ từ 1 đến N trong C#

Cách tính tổng các số lẻ từ 1 đến N trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tính tổng các lẻ…

Cách đếm số chữ số của một số nguyên trong C#

Cách đếm số chữ số của một số nguyên trong C#

Chúng ta cùng xem qua một số ví dụ để hiểu rõ hơn về chương…

Cách tính chu vi và diện tích hình tam giác trong C#

Cách tính chu vi và diện tích hình tam giác trong C#

Tam giác là một loại hình cơ bản trong hình học, có ba đỉnh là…

Cách tính chu vi và diện tích hình tròn trong C#

Cách tính chu vi và diện tích hình tròn trong C#

Trước khi đi vào viết chương trình tính chu vi và diện ..

Cách tính chu vi và diện tích hình chữ nhật trong C#

Cách tính chu vi và diện tích hình chữ nhật trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn ...

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách loại bỏ các ..

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tìm ...

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách xóa các ký tự…

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Trong bài viết này minh sẽ hướng dẫn các bạn cách đếm ...

Cách chuyển đổi nhị phân sang thập phân trong C#

Cách chuyển đổi nhị phân sang thập phân trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách chuyển đổi số ...

Cách chuyển đổi thập phân sang nhị phân trong C#

Cách chuyển đổi thập phân sang nhị phân trong C#

Số nhị phân là các con số có cơ số là 2. Các số nhị…

Top