Jas*_*son 714
所有Func代表都会返回一些内容; 所有Action代理都返回void.
Func<TResult> 不接受任何参数并返回TResult:
public delegate TResult Func<TResult>()
Run Code Online (Sandbox Code Playgroud)
Action<T> 接受一个参数但不返回值:
public delegate void Action<T>(T obj)
Run Code Online (Sandbox Code Playgroud)
Action 是最简单的"裸"代表:
public delegate void Action()
Run Code Online (Sandbox Code Playgroud)
还有Func<TArg1, TResult>和Action<TArg1, TArg2>(和其他人多达16个参数).所有这些(除了Action<T>)都是.NET 3.5的新手(在System.Core中定义).
Joe*_*orn 45
所有Func代表至少使用一个参数
这不是真的.它们都至少采用一个类型参数,但该参数确定了返回类型.
所以不Func<T>接受任何参数并返回一个值.使用Action或Action<T>当您不想返回值时.
调用返回值和非返回值子例程的非常简单的方法。分别使用Func和Action。(另请参阅https://msdn.microsoft.com/en-us/library/018hxwa8(v=vs.110).aspx)
试试这个例子
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());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187151 次 |
| 最近记录: |