2

次のように ArraySegment に拡張メソッドを追加しましたが、それを次のように使用すると

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

myArrSegOfRichTextControl と入力した後、ビジュアル スタジオ プロンプトの 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
    }
}
4

2 に答える 2

4

static拡張メソッドは、クラスで定義する必要があります。公式ドキュメントから:

  1. 拡張メソッドを含む静的クラスを定義します。

次のようにクラスを定義してみてください。

public static class ArraySegmentExtension
{
    ...
}
于 2013-04-06T03:45:01.207 に答える
0

using ArraySegmentExtension;コードファイルの上に追加するのはどうですか。

于 2013-04-06T03:44:52.390 に答える