全部Func委託都返回一個值。 什麼是能夠與返回void的方法一塊兒使用的.NET委託? 函數
有時您會想要爲事件處理編寫委託,在這種狀況下,您能夠利用System.EvenHandler<T>
,除了應該從EventArgs
派生的第二個參數以外, System.EvenHandler<T>
隱式接受object
類型的參數。 EventHandlers將返回void
測試
我我的發現這在測試過程當中有用,能夠在函數體中建立一次性回調。 spa
一種很是簡單的方法來調用return和non return value子例程。 分別使用Func和Action 。 (另請參閱https://msdn.microsoft.com/en-us/library/018hxwa8(v=vs.110).aspx ) code
試試這個例子吧 orm
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()); } }
...沒有參數,而且有一個void返回類型? 事件
若是您正在爲System.Windows.Forms
編寫,您還能夠使用: get
public delegate void MethodInvoker()
嘗試System.Func<T>
和System.Action
string
...沒有參數,而且有一個void返回類型? it
我相信Action
是解決這個問題的方法。 io