我手动将此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#中的list和iterator。
请任何人帮我正确转换代码,任何帮助都非常明确。
非常感谢。
答案 0 :(得分:1)
您的代码是正确的。 List<T>
是java ArrayList<T>
的C#等价物,IEnumerable<T>
或多或少等同于java Iterator<T>
。公共API有点不同,但最终目标是相同的。
请注意,不需要AsEnumerable
电话。由于List<T>
实现IEnumerable<T>
,您只需编写:
IEnumerable<BigInteger> primes = PRIMES;
也就是说,调用AsEnumerable
并不是没有任何错误或代价高昂。
答案 1 :(得分:0)
您的代码似乎很好,但请注意c#中的List可以通过索引访问,因此根据您正在执行的操作,您可能不需要具有等效的迭代器。
答案 2 :(得分:0)
Java'List'是一个接口,因此.NET等效于'IList',而与Java的Iterator相当的.NET是'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();