我已向 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 :
- Define a static class to contain the extension method.
尝试像这样定义你的类:
public static class ArraySegmentExtension
{
...
}
关于c#添加了扩展方法但无法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846780/