C# 扩展方法

为什么要引入扩展方法呢?

1: .net 平台地下有Sring 类型,而底层封装一下String 类型常用的方法,但是由于业务需要需要在String类型添加一个方法,而在.net 未引入扩展类型的时候,我们通常会

定义StringUtil 类来实现,虽然这样也能解决问题,但是会使代码变得很难看。 

public static class StringUtil
    {
        public static bool CheckStringIsNumber(string str)
        {
            if (str == null || str.Length <= 0) throw new ArgumentNullException(nameof(str));
            foreach (var item in str)
            {
                if (!Char.IsNumber(item))
                    return false;
            }
            return true;
        }
    }

//调用如下
 Console.WriteLine(StringUtil.CheckStringIsNumber("13"));

2:引入扩展方法,它既有静态方法的优点,又使调用它们的代码的可读性得到了提高。

扩展方法语法:

它必须在一个非嵌套,非泛型的静态类中

它必须要一个参数

第一个参数必须附加this关键字作为前缀

第一个参数不能有其他修饰符(比如out或ref)

代码如下:

public static class StringExtend
    {
        public static bool CheckStringIsNumber(this string str)
        {
            if (str == null || str.Length <= 0) throw new ArgumentNullException(nameof(str));
            foreach (var item in str)
            {
                if (!Char.IsNumber(item))
                    return false;
            }
            return true;
        }
    }

//调用如下

 Console.WriteLine("13".CheckStringIsNumber());

 

posted @ 2019-03-31 15:30  低调的奢华&Code  阅读(144)  评论(0)    收藏  举报