0

尝试访问另一个类中的静态方法时,我在 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());
        }
}

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

4

1 回答 1

10

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

等等

于 2013-07-12T05:42:33.813 回答