扩展方法的一点理解

在对已有类进行扩展时,我们需将所有扩展方法都写在一个静态类中,这个静态类就相当于存放扩展方法的容器,所有的扩展方法都可以写在这里面。而且扩展方法采用一种全新的声明方式:public static 返回类型 扩展方法名(this 要扩展的类型 sourceObj [,扩展方法参数列表]),与普通方法声明方式不同,扩展方法的第一个参数以this关键字开始,后跟被扩展的类型名,然后才是真正的参数列表。

 

public static class StringExtension

    {

        public static bool EqualsIgnoreCase(this string s, string another)

        {

            return s.Equals(another, StringComparison.OrdinalIgnoreCase);

        }



        public static bool ContainsIgnoreCase(this string source, string another)

        {

            if (source == null)

            {

                throw new ArgumentException("source");

            }

            return source.IndexOf(another, StringComparison.OrdinalIgnoreCase) >= 0;

        }



        public static bool Matches(this string source, string pattern)

        {

            if (string.IsNullOrEmpty(source))

            {

                throw new ArgumentException("source");

            }

            if (string.IsNullOrEmpty(pattern))

            {

                throw new ArgumentNullException("pattern");

            }

            return Regex.IsMatch(source, pattern);

        }

            }

 

public static class DictionaryExtension

    {



        public static bool TryAdd<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key, TValue value)

        {

            if (ReferenceEquals(dict, null))

            {

                throw new ArgumentNullException("dict");

            }



            if (dict.ContainsKey(key))

            {

                return false;

            }

            else

            {

                dict.Add(key, value);

                return true;

            }

        }



        public static void AddOrReplace<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key, TValue value)

        {

            if (ReferenceEquals(dict, null))

            {

                throw new ArgumentNullException("dict");

            }

            dict[key] = value;

        }

           }

 

 

 

参考http://www.cnblogs.com/abcdwxc/archive/2007/11/21/967580.html

你可能感兴趣的:(方法)