XVII : Hàm trong c#

Ngày đăng: 2023-05-02 09:52:59

Mục lụ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 y

{

    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:

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

Ví dụ

using System;

 

namespace y

{

    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("Xin xhao");

            Console.ReadKey();

        }

    }

}

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

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

Ví dụ

using System;

 

namespace y

{

    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("Ông anh");

            Console.WriteLine(name);

            Console.ReadKey();

        }

    }

}

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

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 y

{

    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:

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 y

{

    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:

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 y

{

    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:

Như vậy mình chỉ cần phân biệt ref và out 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ề

 

Về bài trước...

                                  Bài tiếp theo...


Tài liệu lập trình C#

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

12276