Action无返回值4种重载
Action<T>
Action<T1,T2>
Action<T1,T2,T3>
Action<T1,T2,T3,T4>
用于执行一个带参数的操作,并且不返回值。
示例如下以Action<T>为例
public static void Main()
{
Action<string> messageTarget;
//方法是实例化 Action<T> 委托,而不是显式定义一个新委托并将命名方法分配给该委托。
messageTarget = ShowWindowsMessage;
messageTarget("Hello, World1!");
// Action<T> 委托与匿名方法一起使用
messageTarget = delegate(string s) {ShowWindowsMessage(s); };
messageTarget("Hello, World2!");
//将 lambda 表达式分配给 Action<T> 委托实例
messageTarget = s => ShowWindowsMessage(s);
messageTarget("Hello, World3!");
}
private static void ShowWindowsMessage(string message)
{
MessageBox.Show(message);
}
Func返回值保存在TResult中5种重载,同时Func的返回类型也为TResult
Func<TResult>
Func<T,TResult>
Func<T1,T2,TResult>
Func<T1,T2,T3,TResult>
Func<T1,T2,T3,T4,TResult>
用于执行一个带参数的操作,并且有返回值,返回值保存在TResult中。
示例如下以Func<T,TResult>为例
public static void Main()
{
// 实例化 Func<T, TResult> 委托
Func<string, string> convertMethod = UppercaseString;
string name = "Dakota1";
Console.WriteLine(convertMethod(name));
//将 Func<T, TResult> 委托与匿名方法一起使用
Func<string, string> convert = delegate(string s)
{ return UppercaseString(s);};
string name = "Dakota2";
Console.WriteLine(convert(name));
//将 lambda 表达式分配给 Func<T, TResult> 委托。
Func<string, string> convert = s => UppercaseString(s);
string name = "Dakota";
Console.WriteLine(convert(name));
}
private static string UppercaseString(string inputString)
{
return inputString.ToUpper();
}
Predicate<T>返回值为bool无重载,顾名思义用于对象比较,多用于在集合中搜索元素。
static void Main(string[] args)
{string Text = "abcdefg";//实例化Predicate<string> 委托Predicate<string> FindA;
FindA = ContainA;
Console.WriteLine(FindA(Text));
//将 Predicate<string> 委托与匿名方法一起使用FindA = delegate(string s) { return ContainA(s); };Console.WriteLine(FindA(Text));//将 lambda 表达式分配给 Predicate<string> 委托。FindA = s=>ContainA(s);Console.WriteLine(FindA(Text));}
public static bool ContainA(string Text){
return Text.IndexOf("a") > 0;
}
浙公网安备 33010602011771号