📜  C#|功能代表

📅  最后修改于: 2021-05-29 13:37:30             🧑  作者: Mango

先决条件:C#中的代表

创建自定义委托时,我们必须遵循以下步骤:

步骤1:以与方法完全相同的格式声明一个自定义委托。

步骤2:创建自定义委托的对象。

步骤3:调用方法。

通过使用这些步骤,我们创建了一个自定义委托,如下面的程序所示。但是问题在于,要创建委托,我们需要遵循上述过程。为了克服这种情况,C#提供了一个内置的Func委托。使用Func委托,您无需遵循以下过程即可创建委托。

例子:

// C# program to illustrate how to 
// create custom delegates
using System;
  
class GFG {
  
    // Declaring the delegate
    public delegate int my_delegate(int s, int d,
                                   int f, int g);
  
    // Method
    public static int mymethod(int s, int d,
                              int f, int g)
    {
        return s * d * f * g;
    }
  
    // Main method
    static public void Main()
    {
  
        // Creating object of my_delegate
        my_delegate obj = mymethod;
        Console.WriteLine(obj(12, 34, 35, 34));
    }
}

输出:

485520

Func是内置的泛型类型委托。该委托使您不必像上面的示例中那样定义自定义委托,并使您的程序更具可读性和优化性。众所周知,Func是一个通用委托,因此它是在系统名称空间下定义的。它最多可以包含0个输入参数,最多可以包含16个输入参数,并且只能包含一个out参数。 Func委托的最后一个参数是out参数,它被视为返回类型并用于结果。 Func通常用于将要返回值的那些方法,换句话说,Func委托用于值返回的方法。它也可以包含相同类型或不同类型的参数。

句法:

在这里, P1P2 …。 P16是输入参数的类型, PResult是输出参数的类型, arg1 …。 arg16是Func委托封装的方法的参数。

示例1:在这里,我们使用Func委托仅在一行中创建委托,而无需使用上述过程。该Func委托包含四个输入参数和一个输出参数。

// C# program to illustrate Func delegate
using System;
  
class GFG {
  
    // Method
    public static int mymethod(int s, int d, int f, int g)
    {
        return s * d * f * g;
    }
  
    // Main method
    static public void Main()
    {
  
        // Using Func delegate
        // Here, Func delegate contains
        // the four parameters of int type
        // one result parameter of int type
        Func val = mymethod;
        Console.WriteLine(val(10, 100, 1000, 1));
    }
}

输出:

1000000

范例2:

// C# program to illustrate Func delegate
using System;
  
class GFG {
  
    // Method
    public static int method(int num)
    {
        return num + num;
    }
  
    // Main method
    static public void Main()
    {
  
        // Using Func delegate
        // Here, Func delegate contains 
        // the one parameters of int type
        // one result parameter of int type
        Func myfun = method;
        Console.WriteLine(myfun(10));
    }
}

输出:

20

重要事项:

  • Func Delegate中的最后一个参数始终是out参数,该参数被视为返回类型。通常用于结果。
  • 您还可以将Func委托与匿名方法一起使用。如下例所示:

    例子:

    Func val = delegate(int x, int y, int z)
    {
        return x + y + z;
    };
    
  • 您还可以将Func委托与lambda表达式一起使用。如下例所示:

    例子:

    Func val = (int x, int y, int z) = > x + y + z;