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

あなたのコードは正しいです。 JavaにList<T>相当する C# であり、多かれ少なかれ java に相当します。パブリック API は少し異なりますが、最終的な目標は同じです。ArrayList<T>IEnumerable<T>Iterator<T>

ただし、電話をかける必要はありませ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' であり、Java の Iterator に相当する .NET は 'IEnumerable' ではなく 'IEnumerator' です。

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 に答える