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 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 回答
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 回答