最便宜的手机网站建设,网盘资源免费观看,wordpress文章html页面,wap免费C# .NET Framework的特殊委托
.NET Framework中定义了几种特殊的委托类型#xff0c;以简化委托的使用。以下是一些常用的特殊委托类型#xff1a;
PredicateT
这是一个返回布尔值的委托#xff0c;接受一个类型为T的参数。常用于定义过滤条件。
using System;
…C# .NET Framework的特殊委托
.NET Framework中定义了几种特殊的委托类型以简化委托的使用。以下是一些常用的特殊委托类型
PredicateT
这是一个返回布尔值的委托接受一个类型为T的参数。常用于定义过滤条件。
using System;
using System.Collections.Generic;// 测试一个整数列表找出所有大于10的整数。
class Program
{static void Main(){Listint numbers new Listint { 1, 12, 3, 45, 6, 78 };Predicateint isGreaterThan10 x x 10;foreach (var number in numbers.FindAll(isGreaterThan10)){Console.WriteLine(number);}}
}ConverterTInput, TResult
接受一个类型为TInput的参数并返回一个类型为TResult的对象。用于类型转换。
using System;// 将字符串数组转换为整数数组。
class Program
{static void Main(){string[] strings { 1, 2, 3 };Converterstring, int stringToInt s int.Parse(s);int[] integers Array.ConvertAll(strings, stringToInt);Console.WriteLine(string.Join(, , integers));}
}ComparisonT
接受两个类型为T的参数并返回一个整数表示它们的相对顺序。常用于排序操作。
using System;class Program
{static void Main(){int[] numbers { 3, 1, 4, 1, 5 };Comparisonint comparer (x, y) x.CompareTo(y);Array.Sort(numbers, comparer);Console.WriteLine(string.Join(, , numbers));}
}Action
一个无返回值的委托可以接受从0到16个参数。Action是其泛型形式。
using System;// 定义一个无参数无返回值的委托用于打印消息。
class Program
{static void PrintMessage(){Console.WriteLine(Hello, World!);}static void Main(){Action printAction PrintMessage;printAction();}
}FuncTResult
一个有返回值的委托返回类型为TResult无参数。FuncT1, T2, …, TResult是其泛型形式可以接受从1到16个参数。
using System;// 定义一个返回布尔值的委托检查一个数字是否为偶数。
class Program
{static void Main(){Funcint, bool isEven number number % 2 0;Console.WriteLine(isEven(10)); // 输出 TrueConsole.WriteLine(isEven(7)); // 输出 False}
}EventHandler
专门用于事件处理的标准委托类型接受一个Object类型的sender和EventArgs或其派生类型e作为参数。
using System;// 使用 EventHandler 来定义一个事件处理程序响应按钮点击事件。
class Program
{public event EventHandler ButtonClicked;protected virtual void OnButtonClicked(EventArgs e){ButtonClicked?.Invoke(this, e);}public void SimulateButtonClick(){OnButtonClicked(EventArgs.Empty);}
}class Test
{static void Main(string[] args){Program p new Program();p.ButtonClicked (sender, e) {Console.WriteLine(Button was clicked.);};p.SimulateButtonClick();}
}