SupCube

  • 主页
  • 随笔
所有文章 友链 关于我

SupCube

  • 主页
  • 随笔

C#扩展方法

2019-06-30 阅读量5089

在开发过程中,经常需要对相同的某个类型的数据进行处理。譬如:字符串自定义转化、时间格式的自定义转化等。
按照正常的开发我们需要定义一个方法,用原始的数据作为参数实体,然后在方法内部处理,然后返回处理之后的参数;
如:需要对一个字符串处理处理成int类型,如果字符串合法则返回数据,如果不合法则返回0。开发代码如下:

public class Program
{
    /// <summary>
    /// 方法如下
    /// </summary>
    /// <param name="inputNum"></param>
    /// <returns></returns>
    private static int GetNum(string inputNum)
    {
        int result;
        int.TryParse(inputNum, out result);
        return result;
    }
    /// <summary>
    /// 测试
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {
        string test1 = "123";
        Console.WriteLine(GetNum(test1));
    }
}

但是能否有其他更“高大上”的方法呢:我们可以扩展方法。对字符串String扩展方法。代码如下:

/// <summary>
/// 扩展类
/// </summary>
public static class SupExtString
{
    public static int ToInt(this string inputNum)
    {
        int result=0;
        int.TryParse(inputNum, out result);
        return result;
    }
}

然后调用类如下:

public class Program
{

    /// <summary>
    /// 测试
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {
        string test1 = "123";
        Console.WriteLine(test1.ToInt());
    }
}

在扩展方法的时候需要注意事项如下:
1.扩展方法必须在静态类中。
2.扩展方法必须是静态方法。
3.需要扩展的数据类型应用this关键字修饰并作为第一个参数传递。
4.如果扩展方法有参数时:参数要放到this修饰的参数之后。(上述例子是0参的实现方式);
5.引用的时候需要应用到扩展类的命名空间即可。

赏

谢谢你请我吃糖果

支付宝
微信

扫一扫,分享到微信

微信分享二维码
Dapper事物操作
C#多线程Thread-Task-Parallel用法
京公网安备11011102002544 © 京ICP备2024068849号-1
智汇魔方:http://www.supcube.com
  • 所有文章
  • 友链
  • 关于我
  • 切水果
  • json格式化
  • 自动分组
  • 集合差集