0

我正在手动将此 Java 代码转换为 C#:

private static final List<BigInteger> PRIMES = Arrays.asList(new BigInteger[]
    { new BigInteger("10007"), new BigInteger("10009"),
      new BigInteger("10037"), new BigInteger("10039")});

Iterator<BigInteger> primes = PRIMES.iterator();

这是我在 C# 中的代码:

private static readonly List<BigInteger> PRIMES = new List<BigInteger> {
    10007, 10009,
    10037, 10039 };
IEnumerable<BigInteger> primes = PRIMES.AsEnumerable<BigInteger>();

但是,我不确定我的代码是否正确。我真的不了解 C# 中的列表和迭代器。

请任何人帮助我正确转换代码,非常感谢任何帮助。

非常感谢。

4

3 回答 3

1

你的代码是正确的。 List<T>是 java 的 C# 等价物,ArrayList<T>或多或少IEnumerable<T>是 java 的等价物Iterator<T>。公共 API 有点不同,但最终目标是相同的。

请注意,虽然不需要AsEnumerable调用。由于List<T>实现IEnumerable<T>了你可以写:

IEnumerable<BigInteger> primes = PRIMES;

也就是说,打电话AsEnumerable并不是真的没有任何问题或代价高昂。

于 2013-07-10T15:04:37.360 回答
0

您的代码看起来不错,但请注意 C# 中的 List 可以通过索引访问,因此根据您在做什么,您可能不需要等效于迭代器。

于 2013-07-10T15:07:07.240 回答
0

Java 'List' 是一个接口,因此 .NET 等价物是 'IList',而 .NET 等价于 Java 的 Iterator 是 'IEnumerator',而不是 'IEnumerable':

private static readonly IList<System.Numerics.BigInteger> PRIMES = new System.Numerics.BigInteger[] { 10007, 10009, 10037, 10039 };

internal IEnumerator<System.Numerics.BigInteger> primes = PRIMES.GetEnumerator();
于 2013-07-10T17:38:40.610 回答