西安企云基创软件有限公司

C#3.0新亮点

         C#2.0之前, 如果一个方法或者变量需要使用委托(delegate)时, 则之前必须创建一个命名方法, 并在需要委托的位置传入这个名称. 比如有一个针对int类型的数据处理, 目的是筛选出一个int数组中为奇数的元素, 或者其它一些满足条件的元素,代码如下:
public class Commom
{
    //命名一个委托方法
    public delegate bool IntFilter(int i);
    //筛选出符合委托方法所要求的int, 返回一个int[]
    public static int[] FilterArrayOfInts(int[] ints, IntFilter filter)
    {
        ArrayList aList = new ArrayList();
        foreach (int i in ints)
            if (filter(i))
                aList.Add(i);
        return (int[])aList.ToArray(typeof(int));
    }
}
         Commom类建立了一个统一的模型, 这个模型主要用于传入一个delegate方法, 可以获得这个delegate方法条件所要求的数字. 具体这个delegate方法可以写在另一个类中, 可以写很多方法, 检测是否是奇数, 是否是偶数, 这个数是否是3的倍数...这个根据需要自己写. 这样写可以提高Commom类的可重用程度,代码如下:
//根据需要, 自己定义筛选方法
public class MyIntFilter
{
    //自己定义的筛选方法1: 检测是否是奇数
    public static bool IsOdd(int i)
    {
        return ((i & 1) == 1);
    }
    //自己定义的筛选方法2: 检测是否是偶数
    public static bool IsEven(int i)
    {
        return ((i & 1) != 1);
    }
    //...根据需要还可以定义其它筛选方法
}
         调用MyIntFilter中的筛选方法,代码如下:
int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//筛选出奇数
int[] oddNums = Commom.FilterArrayOfInts(nums, MyIntFilter.IsOdd);
//筛选出偶数
int[] evenNums = Commom.FilterArrayOfInts(nums, MyIntFilter.IsEven);
//测试结果, 打印出oddNums和evenNums
Console.WriteLine("Print oddNums:");
foreach (int i in oddNums)
    Console.Write(i + " ");
Console.WriteLine("Print evenNums:");
foreach (int i in evenNums)
    Console.Write(i + " ");
         为什么要使用匿名方法? 当然是为了偷懒. 为每一个筛选策略专门写一个方法很多时候会令人很烦, 很多方法可能只被用到一次两次, 且为每个方法都起一个好听的名字并在调用这些方法的时候传入这些方法名令人不爽, 因此C#2.0的时候可以使用"匿名方法"解决这一问题,代码如下:
int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//筛选出奇数
int[] oddNums = Commom.FilterArrayOfInts(nums, delegate(int i)
{
    return ((i & 1) == 1);
});
Console.WriteLine("Print oddNums:");
foreach (int i in oddNums)
    Console.Write(i + " ");

联系电话:13572265258、13324575128
QQ:455075912

服务宗旨

        我们为政府及企事业单位提供从管理咨询、软件定制开发、软件实施以及运营维护的全程、优势、一体化业务生态链服务体系。以业务流程梳理、优化和数据标准化为目标的管理咨询,协助企业提升管理基础。基于SCP智慧云平台的构件组装思想,以创新的“BTO+DIY”模式为客户提供可视化、快速的软件定制开发。我们为企业提供长期的软件系统运营和维护服务,持续地进行软件系统的维护、升级和完善,为客户创造长期的价值和潜在的增长(BTO:客户提需求,软件“按单生产”,量身打造业务系统;DIY:软件DIY,你的系统你做主)。