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

标签 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
    }
}

最佳答案

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

  1. Define a static class to contain the extension method.

尝试像这样定义你的类:

public static class ArraySegmentExtension
{
    ...
}

关于c#添加了扩展方法但无法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846780/

相关文章:

c# - 如何从当前文件路径向上导航一个文件夹?

c# - 距离变换.NET

c# - 如何实现单机单实例应用?

c# - 6 位或 8 位数字的正则表达式

go - 如何在Go中向现有类型添加新方法?

c# - 作为静态类的一部分与[理论上]作为 namespace 的一部分,扩展方法是否以任何实际方式受益?

c# - 你能教 Entity Framework 识别表达式吗?

c# - 为所有枚举添加扩展方法,而不仅仅是特定类型

c# - ASMX Web 服务问题在单独的线程中与 Windows 服务通信

c# - process.WaitForExit(int32) 异步