0

技術者-私はこの静的拡張をSplitに対して正しく定義していると思いますが、メッセージ:拡張メソッドは非ジェネリック静的クラスで定義する必要があるためではありません。

これは、何かをテストするための単純なc#コンソールプログラムです。これが私が持っているものです:

class Program
{ 
  static int Main(string[] args)
  {
    int[] numbers = new int[10000]; 
           for (int i = 0; i < numbers.Length; ++i) 
               numbers[i] = i; 

  int[][] sectionedNumbers = numbers.Split(1000); 
   .
   . //blah blah blah .. rest of code

 return 0;
 }

 public static T[][] Split<T>(this T[] arrayIn, int length)
 {
  bool even = arrayIn.Length % length == 0;
    .
    .
    . // blah blah .. more code

   return newArray;
   }

私が間違っているのは何ですか?

4

3 に答える 3

2

Programエラーメッセージで要求されているように、クラスは静的ではありません。

  • staticクラス宣言にディレクティブを追加します。

     static class Program
     {
         // ...
    
  • またはSplit、別の静的クラスに完全に移動します。

その後、コードを再度コンパイルする必要があります。

于 2012-07-31T15:20:53.650 に答える
1

次のように、クラスで拡張メソッドを定義する必要があります。

public static class ArrayExtensions
{
 public static T[][] Split<T>(this T[] arrayIn, int length) 
 { 
  bool even = arrayIn.Length % length == 0; 
    . 
    . 
    . // blah blah .. more code 

   return newArray; 
   } 
}
于 2012-07-31T15:23:10.530 に答える
1

こんにちは、コンテナクラスは静的である必要があります

静的クラスにメソッドを設定します

public static class Extension
{
 public static T[][] Split<T>(this T[] arrayIn, int length)
 {
  bool even = arrayIn.Length % length == 0;
    .
    .
    . // blah blah .. more code

   return newArray;
   }

}
于 2012-07-31T15:20:46.100 に答える