Đề XuấT, 2020

Editor Choice

Sự khác biệt giữa ref và out trong C #

Phần mềm giới thiệu và phần mềm ra mắt là các bộ sửa đổi tham số được sử dụng trong C #. Sử dụng ref và out, bạn có thể chuyển bất kỳ loại giá trị nào bằng cách tham chiếu đến bất kỳ phương thức nào. Lý do chuyển bất kỳ loại giá trị nào bằng tham chiếu của nó giới thiệu sự khác biệt chính giữa từ khóa ref và out. Từ khóa ref cho phép phương thức được gọi thay đổi nội dung của đối số được truyền cho nó bằng từ khóa ref. Từ khóa out cho phép phương thức được gọi trả về nhiều hơn một giá trị trong một cuộc gọi. Hãy nghiên cứu sự khác biệt giữa ref và out cùng với biểu đồ so sánh.

Biểu đồ so sánh

Cơ sở để so sánhTham chiếuNgoài
Căn bảnNó cho phép thay đổi giá trị của đối số được tiến hành với từ khóa ref.Nó cho phép một phương thức trả về các giá trị trước một từ khóa out.
Khởi tạoTham số ref phải được khởi tạo trước lệnh gọi phương thức.Tham số out phải được khởi tạo bên trong phương thức được gọi trước khi nó kết thúc.
Tờ khaiTham số được thay đổi bởi một phương thức được khai báo là ref trong khi khai báo phương thức và gọi phương thức.Tham số được trả về phải được khai báo là ref trong khi khai báo phương thức và gọi phương thức.

Định nghĩa của từ khóa Ref

Phần mềm giới thiệu là một công cụ sửa đổi tham số được sử dụng khi có nhu cầu gọi một phương thức với tham chiếu cuộc gọi. Khi chúng ta muốn các thay đổi được thực hiện cho các đối số bên trong một phương thức được gọi phải phản ánh giá trị ban đầu của biến đó, thì công cụ sửa đổi tham số ref được sử dụng. Kiểu giá trị mà chúng tôi muốn khai báo là một ref được đi trước bởi từ khóa ref ref trong khi khai báo phương thức và gọi phương thức. Nhiều hơn một tham số có thể được khai báo là một ref ref trong khi gọi và khai báo một phương thức.

 sử dụng hệ thống; lớp DemoRef {công khai void Square (ref int s) {s = s * s; }} lớp Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a trước khi gọi phương thức:" + a); ob.Sapes (ref a); // Đã sử dụng ref Keyword Console.WriteLine ("a sau cuộc gọi:" + a); }} // xuất a trước khi gọi phương thức: 10 a sau khi gọi phương thức: 100 

Trong đoạn mã trên, biến 'a' được truyền dưới dạng đối số cho phương thức Square (ref a) cùng với tham số sửa đổi tham số được đính kèm với nó. Nó có nghĩa là bất cứ điều gì thay đổi phương thức Square (ref a) sẽ thực hiện trên biến 'a' bên trong nó sẽ phản ánh giá trị ban đầu của 'a', bên ngoài phương thức cũng vậy.

Có một số điểm quan trọng cần phải ghi nhớ khi xử lý tham số sửa đổi tham số.

  • Đối số mà bạn đang chuyển qua ref cho một phương thức phải được khởi tạo trước khi gọi phương thức.
  • Phương thức không được gán giá trị ban đầu cho đối số ref.
  • Bạn cũng có thể sử dụng ref cùng với biến tham chiếu.

Định nghĩa của từ khóa

Mỗi lần bạn gọi một phương thức, nó sẽ chỉ trả về một giá trị duy nhất. Nếu bạn muốn một phương thức trả về nhiều hơn một giá trị trong một cuộc gọi, từ khóa của Out out ra phải được sử dụng cùng với các tham số mà bạn muốn trả về khi phương thức bị chấm dứt. Đôi khi, đó là trường hợp khi chúng ta không muốn truyền bất cứ điều gì cho phương thức nhưng muốn phương thức trả lại một cái gì đó, chúng ta sử dụng các tham số với một từ khóa out. Hãy hiểu nó với một ví dụ.

 sử dụng hệ thống; class DemoOut {public int Decompose (double x, out double double) {int Whole_num; Whole_num = (int) x; phân số = x - Whole_num; trả lại toàn bộ tên; }} lớp Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; frac đôi; i = ob.Decompose (100.125, hết frac); // đã sử dụng hết từ khóa Console.WriteLine ("Toàn bộ phần số là" + i); Console.WriteLine ("phần phân số là" + frac); }} // đầu ra Phần nguyên là 100 Phần phân số là 0, 125 

Trong đoạn mã trên, hai giá trị đang được trả về bởi, phương thức Decompose (). Một cái nó trả về bởi từ khóa, trả về, ví dụ như full_num, và cái khác nó trả về một tham số đi trước từ khóa out trong khi gọi phương thức tức là frac fr.

Những điểm quan trọng cần nhớ về từ khóa out.

  • Không giống như từ khóa ref, tham số sử dụng từ khóa out không được khởi tạo trước khi gọi phương thức.
  • Phương thức được gọi sẽ tự gán một giá trị cho tham số với từ khóa out vì nó được coi là không được gán bên trong phương thức được gọi, nghĩa là nó được coi là không có giá trị ban đầu.
  • Phương thức được gọi phải gán một giá trị cho tham số out trước khi phương thức kết thúc.
  • Từ khóa out cũng được áp dụng cho biến tham chiếu.

Sự khác biệt chính giữa Ref và Out trong C #

  1. Khi một biến đi trước từ khóa ref được truyền cho bất kỳ phương thức nào thì những thay đổi được thực hiện cho nó bên trong phương thức sẽ phản ánh giá trị ban đầu của nó. Khi một biến được truyền cho một phương thức được đi trước bởi từ khóa out, phương thức trả về nó mà không sử dụng từ khóa return.
  2. Tham số ref nên được khởi tạo trước khi nó được truyền cho một phương thức. Mặt khác, tham số out phải được khởi tạo bên trong phương thức mà nó được truyền vào.
  3. Trong khi gọi, khai báo hoặc xác định một phương thức, tham số ref được khai báo rõ ràng là ref. Mặt khác, trong khi gọi, khai báo hoặc định nghĩa một phương thức, tham số out được khai báo rõ ràng là out.

Phần kết luận:

Bất cứ khi nào biến được truyền bởi tham chiếu đến một phương thức, từ khóa ref và out có thể được sử dụng. Trong khi đó, lý do sử dụng cả hai từ khóa là khác nhau khi từ khóa ref có thể được sử dụng để thay đổi giá trị của đối số đi trước từ khóa ref, được chuyển đến phương thức được gọi và từ khóa out được sử dụng để trả về giá trị của đối số đi trước theo từ khóa ra.

Top