c#添加了扩展方法但无法使用它

时间:2013-04-06 03:43:05

标签: c# extension-methods

我已将扩展方法添加到ArraySegment,如下所示,但当我将其用作

     var lines = TextControl.Lines;
     ArraySegment<String> myArrSegOfRichTextControl = 
                              new ArraySegment<string>(lines,0,2);

在输入myArrSegOfRichTextControl之后,我找不到visual studio提示符GetSegment方法。那我怎么能调用扩展的方法呢?感谢。

namespace ArraySegmentExtension
{
    class ArraySegmentExtension 
    {
        #region ArraySegment related methods

        public static ArraySegment<T> GetSegment<T>(this T[] array, int from, int count)
        {
            return new ArraySegment<T>(array, from, count);
        }

        public static ArraySegment<T> GetSegment<T>(this T[] array, int from)
        {
            return GetSegment(array, from, array.Length - from);
        }

        public static ArraySegment<T> GetSegment<T>(this T[] array)
        {
            return new ArraySegment<T>(array);
        }

        public static IEnumerable<T> AsEnumerable<T>(this ArraySegment<T> arraySegment)
        {
            return arraySegment.Array.Skip(arraySegment.Offset).Take(arraySegment.Count);
        }

        public static T[] ToArray<T>(this ArraySegment<T> arraySegment)
        {
            T[] array = new T[arraySegment.Count];
            Array.Copy(arraySegment.Array, arraySegment.Offset, array, 0, arraySegment.Count);
            return array;
        }

        #endregion
    }
}

2 个答案:

答案 0 :(得分:4)

必须在static类上定义扩展方法。来自official documentation

  
      
  1. 定义一个静态类以包含扩展方法。
  2.   

尝试像这样定义你的类:

public static class ArraySegmentExtension
{
    ...
}

答案 1 :(得分:0)

如何在代码文件之上添加using ArraySegmentExtension;