代码改变世界

C# 中的拓展方法,以StringBuilder加上IndexOf方法举例

2012-05-30 20:32  Andrew.Wangxu  阅读(2832)  评论(7编辑  收藏  举报

大家都知道StringBuilder是处理字符串的首选,我不太明白为什么StringBuilder提供的方法竟然比string类要少,挺奇怪。

废话不多说,直接图文跟着走吧。

上图先(我写好的拓展方法):

默认StringBuilder是没有IndexOf方法的,这里IndexOf方法是我自己拓展上去的。

如何来实现这个拓展呢,代码如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace ExtensionMethod
{
    public static class StringBuilderExtension
    {
        /// <summary>
        /// 这是我自己写的StringBuilder的拓展方法
        /// </summary>
        /// <param name="sb">StringBuilder字符串类型</param>
        /// <param name="value">要检索的值</param>
        /// <returns></returns>
        public static int IndexOf(this StringBuilder sb, char value)
        {
            for (int i = 0; i < sb.Length; i++)
            {
                if (sb[i] == value)
                    return i;
            }
            return -1;
        }
    }
}

 

注意看方法结构里面的第一个参数,加了个this,这样就表示为StringBuilder的拓展方法了。

另外要注意的地方:拓展方法是在.NET 3.5以上版本才支持的,需要组件System.Core

如果你的项目版本已经调整至3.5以上,无需引入这个System.Core组件,项目会默认带上它的。

 

附上Demo源码项目:https://files.cnblogs.com/andrew-blog/ExtensionMethod.rar

参考:http://www.wxzzz.com/?id=99