Khóa học lập trình C# căn bản

Serial tutorial hướng dẫn lập trình C# cơ bản

Từ khóa ref và out trong C# Từ khóa ref và out trong C# Từ khóa ref và out trong C# Từ khóa ref và out trong C# Từ khóa ref và out trong C# 4.6/5 (279 reviews)

Từ khóa ref và out trong C#

Đã đăng 2016-09-21 22:14:39 bởi Trần Thành Vi Thanh
1 bình luận 29018 lượt xem
Từ khóa ref và out trong C# 4.6 /5 stars (9 reviews)
 

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ TRONG C#. Chúng ta đã biết cách sử dụng hàm cùng parameter. Có một vấn đề phát sinh như sau: mong muốn giá trị của parameter truyền vào, sau khi thực thi các câu lệnh bên trong hàm giá trị đó có thể thay đổi.
Chúng ta sẽ cùng đi đến cách sử dung từ khóa ref và out trong C# để giải quyết vấn đề này nhé.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Từ khóa refout trong C#

Từ khóa ref và out trong C#

Từ khóa ref

Ta xét ví dụ sau:

static void Main(string[] args)

        {

            int value = 5;



            Console.WriteLine("Value before increase: {0}", value);



            IncreaseValue(value);



            Console.WriteLine("Value after increase: {0}", value);

           

            Console.ReadKey();

        }



        static void IncreaseValue(int value)

        {

            value++;

        }

 

Chúng ta sẽ thấy kết quả màn hình in ra hai giá trị 5. Vì sau khi kết thúc hàm IncreaseValue giá trị của value vẫn không thay đổi.

Với mong muốn giá trị của value sẽ thay đổi sau khi kết thúc lời gọi hàm IncreaseValue thì chúng ta sẽ thêm từ khóa ref phía trước kiểu dữ liệu của parameter mong muốn thay đổi giá trị khi khai báo hàm. Đồng thời phải thêm từ khóa ref ngay trước biến parameter truyền vào khi sử dụng hàm.

static void Main(string[] args)

        {

            int value = 5;



            Console.WriteLine("Value before increase: {0}", value);



            IncreaseValue(ref value);



            Console.WriteLine("Value after increase: {0}", value);

           

            Console.ReadKey();

        }



        static void IncreaseValue(ref int value)

        {

            value++;

        }

 

Chúng ta có thể thấy kết quả in ra màn hình giá trị 5 và 6. Do giá trị của value đã thay đổi sau khi kết thúc lời gọi hàm IncreaseValue.

 Lưu ý:

  • Từ khóa ref phải có trước tên parametter của hàm và trước tên biến truyền vào khi gọi hàm sử dụng.
  • Truyền parameter có từ khóa ref bắt buộc phải là một biến (không thể truyền vào một hằng vì hằng là giá trị không thay đổi).
  • Có thể có một hoặc nhiều parameter với từ khóa ref trong lời khai báo hàm.
  • Biến truyền vào có từ khóa ref thì phải được khởi tạo giá trị trước khi truyền vào.
  • Hàm sử dụng sẽ thao tác trực tiếp với vùng nhớ của các parameter trên RAM. Cho nên kết thúc lời gọi hàm giá trị các parameter sẽ bị thay đổi.

Từ khóa out

Từ khóa out cũng tương tự từ khóa ref. Đó là:

  • Vùng nhớ của các parameter sẽ được hàm sử dụng thao tác trực tiếp, dẫn đến khi kết thúc lời gọi hàm giá trị của các parametter có thể bị thay đổi.
  •  Phải có từ khóa out trước tên parameter của hàm và trước tên biến truyền vào khi gọi hàm sử dụng.

Nhưng có một sự khác biệt đó là:

  •  Biến truyền vào có từ khóa out sẽ không cần khởi tạo giá trị ban đầu.
  •  Parameter đó chỉ như một thùng chứa kết quả trả về khi kết thúc gọi hàm.
  •  Đồng thời parameter đó phải được khởi tạo ngay bên trong lời gọi hàm.
static void Main(string[] args)

        {

            int value = 5;



            Console.WriteLine("Value before increase: {0}", value);



            IncreaseValue(out value);



            Console.WriteLine("Value after increase: {0}", value);

           

            Console.ReadKey();

        }



        static void IncreaseValue(out int value)

        {

            value = 0;

            value++;

        }

 

Chúng ta có thể thấy. Trong thân hàm IncreaseValue bắt buộc phải khởi tạo giá trị cho biến value. Kết quả màn hình xuất ra giá trị 5 ban đầu và 1 là kết quả cuối cùng của biến value sau khi kết thúc lời gọi hàm IncreaseValue.


Kết luận

Qua bài này chúng ta đã nắm được cách sử dụng từ khóa refout trong C#.

Bài sau chúng ta sẽ tìm hiểu về MẢNG 1 CHIỀU TRONG C#.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.



Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học từ khóa ref và out trong C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Từ khóa ref và out trong C#
Dinh Tona 2017-12-06 13:57:23

Từ khóa static

Chỗ này chưa có link a ơi !

0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education