关于c#:没有返回类型的Func委托

Func delegate with no return type

所有func委托都返回一个值。可以与返回void的方法一起使用的.NET委托是什么?


所有有趣的代表团都返回了一些东西;所有行动代表团返回的声音。

没有任何论据和回报:

1
public delegate TResult Func<TResult>()

采用一种论据,而不回报价值:

ZZU1

1.Bare delegate is the simplest:

1
public delegate void Action()

还有FuncAction(及其他16个论点)。所有这些(Action除外)都是新的3.5(系统中的定义)。


... takes no arguments and has a void return type?

我相信这是一个解决办法。


BLCK1/

这不是真的所有这些都以最少一种论据为基础,但这一论据决定了归还类型。

没有参数和回报价值。当你不想回报价值时,使用ActionAction


尝试System.FuncSystem.Action


... takes no arguments and has a void return type?

如果你为System.Windows.Forms写作,你也可以使用:

1
public delegate void MethodInvoker()

偶尔,你会写出一个事件处理代表团,在这种情况下,你可以从System.EvenHandler〔12〕中推荐一个object类型的论据,作为对第二个参数的补充,该参数应来自EventArgs。所有的手工艺人都会回到void

我个人在测试一个功能体的一次性呼叫时发现了这个用户名。


一种很容易求助于回报而非回报价值亚例程的方法。是使用函数和行动函数。(See also HTTPs http://msdn.microsoft.com/en-us/library/018hxwa8(V=vs.110).

试试这个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;

public class Program
{
    private Func<string,string> FunctionPTR = null;  
    private Func<string,string, string> FunctionPTR1 = null;  
    private Action<object> ProcedurePTR = null;



    private string Display(string message)  
    {  
        Console.WriteLine(message);  
        return null;  
    }  

    private string Display(string message1,string message2)  
    {  
        Console.WriteLine(message1);  
        Console.WriteLine(message2);  
        return null;  
    }  

    public void ObjectProcess(object param)
    {
        if (param == null)
        {
            throw new ArgumentNullException("Parameter is null or missing");
        }
        else
        {
            Console.WriteLine("Object is valid");
        }
    }


    public void Main(string[] args)  
    {  
        FunctionPTR = Display;  
        FunctionPTR1= Display;  
        ProcedurePTR = ObjectProcess;
        FunctionPTR("Welcome to function pointer sample.");  
        FunctionPTR1("Welcome","This is function pointer sample");  
        ProcedurePTR(new object());
    }  
}