1

.net フレームワーク 4 には BigInteger クラスが含まれるようです。ただし、不変になるかどうかはわかりません。それが良いことなのかどうかも、私には判断できないようです。

不変性には、特に big-int のような「値のような」ものに対して、多くの利点があります。一方、PowerMod のような高コストの操作をできるだけ高速に行うには、基本的な操作を効率的に行う必要があります。インプレース追加は、不変追加よりも高速になります。私は現在、ライブラリ クラスのより良い選択として不変性に傾いています (String を考えてください)。

それが不変になるかどうかは誰にも分かりますか?不変であるべきだと思いますか?

4

4 に答える 4

7

私はそれが不変になると信じています(彼らは基本的に不変のDLR実装をコアに持ち込んでいると思います)。

はい、不変でなければなりません。Int32 や Double などの他の数値型と同様に動作する必要があります。変更可能な数値クラスを持つと、非常に混乱します。

于 2009-04-25T21:39:57.947 に答える
4

これは不変になると思います。これが「値」型の唯一の合理的な設計選択だと思います。(DLR と同様に、F# の BigInt も不変です。最終的にこの型をフレームワークに取り込んで、言語間で共有できるようになったことは素晴らしいことです。)

于 2009-04-25T21:41:03.780 に答える
1

msdn.microsoft.com/en-us/library/system.numerics.biginteger(VS.100).aspxにある(暫定的ですが公式の)ドキュメントをご覧ください。

BigIntegerタイプは、理論上値に上限または下限がない任意の大きさの整数を表す不変のタイプです。[...] BigIntegerタイプは不変であるため[...]、上限または下限がないため、BigInteger値が大きくなりすぎる原因となる操作に対してOutOfMemoryExceptionがスローされる可能性があります。

于 2009-05-23T09:10:16.990 に答える
1

不変になります。はい、そうする必要があります。そうしないと、他の数値タイプのように動作せず、整数ベースのコードからbigintegerベースのコードに移動すると非常に奇妙な動作が見られます。

おそらく、将来のリリースでは追加の可変タイプがあるはずです(StringBuilderはString用です)

于 2009-05-01T14:16:25.780 に答える