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());