2013-07-12 59 views
0

我在尝试访问另一个类中的静态方法时遇到C#中的错误。名称'GimmePrimes'在当前上下文中不存在

这是类试图访问它:

class Problem7 
{ 
    public void Solve() 
    { 
     GimmePrimes(new long[]{2, 3, 5, 7, 11, 13}); 
    } 
} 

这是静态类,其中GimmePrimes位于:

public static class Extensions 
{ 
    //....Other static methods that work// 
    public static IEnumerable<long> GimmePrimes(this long[] firstPrimes) 
     { 
      return firstPrimes.Unfold(priorPrimes => priorPrimes.Last().OddNumbersGreaterThan().SkipWhile(candidate => priorPrimes.TakeWhile(prime => prime * prime <= candidate).Any(prime => candidate.IsDivisibleBy(prime))).First()); 
     } 
} 

两个类都在同一个命名空间。

+0

你需要longarrayname.GimmePrimes – Sayse

回答

9

Extensions需要是一个静态类。

public static class Extensions 

而且,因为它是一个扩展方法,你调用一个错误:

long[] array = new long[] {2, 3, 5, 7, 11, 13 }; 
IEnumerable<long> primes = array.GimmePrimes(); 

与此相关的边注,当我有扩展方法类,我创建了一个单独的一个每种类型我都在延伸,以至于我不会结束一个巨大的整体课程。

public static class IntExtensionMethods 
public static class StringExtensionMethods 
public static class IEnumerableExtensionMethods 

+0

它是一个静态类,对不起,我没抄,超过正常。编辑它以反映真相。 – Reapo

+0

我注意到你在调用扩展方法时也需要在扩展对象中输入'this.'前缀。 – orad

相关问题