.NET 4ベータ2には、。を含む新しいNumerics名前空間があり struct BigInteger
ます。ドキュメントには、私が予想したように、それは不変のタイプであると記載されています。
しかし、私はポストインクリメント演算子(++
)に少し混乱しています。これは間違いなく値を変化させるようです。次のwhileループが機能します。
static BigInteger Factorial(BigInteger n)
{
BigInteger result = BigInteger.One;
BigInteger b = BigInteger.One;
while (b <= n)
{
result = result * b;
b++; // immutable ?
}
return result;
}
これは、MSDNがインクリメント演算子について言っていることです。
BigIntegerオブジェクトは不変であるため、Increment演算子は、valueで表されるBigIntegerオブジェクトよりも値が1大きい新しいBigIntegerオブジェクトを作成します。したがって、Incrementを繰り返し呼び出すと、コストがかかる可能性があります。
うまくいっていれば、使用する必要があるかどうかは理解できたはずですが 、値を変更するにはb = b++
、明らかにそれだけで十分です。++
何かご意見は?