委托+方法+lambda优雅用法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp.DDUP
{
    public class DelegateDemo
    {
        public void Run()
        {
            string orderNo = "Abcde123";
            //1.利用方法委托可写成lambda表达式的形式
            var t = CheckNo(e => e.StartsWith("A"), orderNo);
            Console.WriteLine(t);
            //2.利用扩展方法写法,更优雅
            t = orderNo.CheckNo(e => e.Contains("123") && e.Length == 5);
            Console.WriteLine(t);
            //3.原始写法也优雅
            t = orderNo.StartsWith("A");
            Console.WriteLine(t);
        }
        /// <summary>
        /// 这种写法可以给定委托类型的参数,自定义判断规则
        /// </summary>
        /// <param name="func">委托</param>
        /// <param name="orderNo">字符串</param>
        /// <returns></returns>
        public bool CheckNo(Func<string, bool> func, string orderNo)
        {
            return func(orderNo);
        }
    }
    /// <summary>
    /// 扩展方法使写法更优雅
    /// </summary>
    public static class Extension
    {
        public static bool CheckNo(this string str, Func<string, bool> func)
        {
            return func(str);
        }
    }

}

 

posted @ 2022-11-01 14:39  互联网CV工程师  阅读(15)  评论(0编辑  收藏  举报