在当前上下文中不存在名称“GimmePrimes”

时间:2013-07-12 05:39:44

标签: c# linq visual-studio-express

我在尝试访问另一个类中的静态方法时遇到C#错误。

这是试图访问它的类:

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());
        }
}

两个类都在同一名称空间中。

1 个答案:

答案 0 :(得分: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