静态/通用/非泛型定义错误

时间:2012-07-31 15:19:05

标签: c#

Techies-- 我认为我正在为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;
   }

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您的班级Program不是错误消息请求的静态内容。

  • static指令添加到类声明:

     static class Program
     {
         // ...
    
  • 或将Split完全移到另一个静态类中。

然后你的代码应该再次编译。

答案 1 :(得分: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;
   }

}

答案 2 :(得分: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; 
   } 
}