C# 名称';GimmePrimes';在当前上下文中不存在

C# 名称';GimmePrimes';在当前上下文中不存在,c#,linq,visual-studio-express,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//

在尝试访问另一个类中的静态方法时,我在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());
        }
}
公共静态类扩展
{
//……其他有效的静态方法//
公共静态IEnumerable GimmePrimes(此长[]firstPrimes)
{
返回firstPrimes.Unfold(priorPrimes=>priorPrimes.Last().oddnumbersgreeaterthan().SkipWhile(candidate=>priorPrimes.TakeWhile(prime=>prime*prime candidate.isdivisiblyby(prime)).First();
}
}

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

扩展需要是静态类

public static class Extensions
此外,由于它是一个扩展方法,您将其称为错误的:

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

等等。

您需要longarrayname.GimmePrimesIt是一个静态类,很抱歉我没有正确复制它。编辑它以反映事实。我注意到,在调用扩展方法时,还需要在扩展对象中输入
this.
前缀。
public static class IntExtensionMethods
public static class StringExtensionMethods
public static class IEnumerableExtensionMethods