Domanda

Il framework .NET 4 è apparentemente andando a includere una classe BigInteger. Tuttavia, non riesco a sapere se sia o non sarà immutabile. Anche io non riesco a decidere se o non sarebbe una buona cosa.

L'immutabilità ha una tonnellata di benefici, in particolare per qualcosa come "valore-like" come un grande-int. D'altra parte, le operazioni di base devono essere efficienti per fare operazioni ad alto costo come PowerMod così rapida possibile. Un'aggiunta inplace sta per essere più veloce di un'aggiunta immutabile. Attualmente sto appoggiato verso immutabilità come la scelta migliore per una libreria di classi (si pensi String).

Qualcuno sa se sarà immutabile? Pensi che dovrebbe essere immutabili?

È stato utile?

Soluzione

Credo che sarà immutabile (deduco che stanno portando fondamentalmente l'attuazione DLR, che è immutabile, nel nucleo).

Sì, dovrebbe essere immutabile. Dovrebbe comportarsi come altri tipi di valore numerico, come Int32 e Double. Avere una classe numerica mutabile sarebbe molto confuso.

Altri suggerimenti

Credo che sarà immutabili, e credo che questo è l'unica scelta ragionevole di progettazione per un tipo di 'valore'. (Come la DLR, l'F # BigInt è anche immutabile. E 'bello che stiamo finalmente ottenere questo tipo nel quadro di condividere tra le varie lingue.)

Sarà immutabile. Sì, dovrebbe essere - in caso contrario, non si comporterà come gli altri tipi numerici e si vedrà alcuni molto strani comportamenti se si sposta dal codice basato intero a BigInteger codice basato.

Forse ci dovrebbe essere un tipo mutabile aggiuntivo in un futuro rilascio (come StringBuilder è per String)

Dai un'occhiata ai documenti (preliminari, ma ufficiali) a msdn.microsoft.com/en-us/library/system.numerics.biginteger (VS.100) aspx

  

Il tipo BigInteger è un tipo immutabile che rappresenta un arbitrariamente grande numero intero il cui valore in teoria non ha limite superiore o inferiore. [...] Perché il tipo BigInteger è immutabile [...] e perché non ha limite superiore o inferiore, un OutOfMemoryException può essere gettato per qualsiasi operazione che provoca un valore BigInteger a crescere troppo grande.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top