Computer >> Máy Tính >  >> Lập trình >> C#

Sự khác biệt giữa đại biểu Func và đại biểu hành động trong C # là gì?

Đại biểu là một kiểu đại diện cho các tham chiếu đến các phương thức với một danh sách tham số cụ thể và kiểu trả về. Khi chúng ta khởi tạo một đại diện, chúng ta có thể liên kết thể hiện của nó với bất kỳ phương thức nào có chữ ký và kiểu trả về tương thích. Chúng ta có thể gọi (hoặc gọi) phương thức thông qua cá thể ủy quyền.

Chức năng ủy quyền

Func là một đại diện chung được bao gồm trong không gian tên Hệ thống. Nó không có hoặc nhiều tham số đầu vào và một tham số ra. Tham số cuối cùng được coi là tham số out. Người đại diện này có thể trỏ đến một phương thức có tối đa 16 Tham số và trả về một giá trị.

Dưới đây là đại biểu Func với hai tham số đầu vào và đầu ra.

Hàm Append;

Ví dụ

using System;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         Func<string, string, string> func = Append;
         string fullName = func("Michael", "Jackson");
         Console.WriteLine(fullName);
         Console.ReadLine();
      }
      static string Append(string firstName, string lastName) {
         return firstName + lastName;
      }
   }
}

Đầu ra

MichaelJackson

Đại biểu hành động

Hành động là một kiểu đại biểu được xác định trong không gian tên Hệ thống. Đại biểu loại Hành động giống như đại biểu Func ngoại trừ đại biểu Hành động không trả về giá trị. Nói cách khác, một đại biểu Hành động có thể được sử dụng với một phương thức có kiểu trả về là void. Nó có thể chứa tối thiểu 1 và tối đa 16 tham số đầu vào và không chứa bất kỳ tham số đầu ra nào.

Dưới đây là đại biểu Func với hai tham số đầu vào và đầu ra.

Hàm Print;

Ví dụ

using System;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         Action func = AppendPrint;
         func("Michael", "Jackson");
         Console.ReadLine();
      }
      static void AppendPrint(string firstName, string lastName) {
         string fullName = firstName + lastName;
         Console.WriteLine($"{fullName}");
      }
   }
}

Đầu ra

Đầu ra của đoạn mã trên là

MichaelJackson