2009-01-11 4 views
0

De quelle façon (s) serait un trop-plein dans une expression souhaitable dans les cas suivants:Dépassement dans les expressions C# Ok?

  1. calculer une valeur de hachage
  2. Calcul d'un chèque somme

?

+0

Pourriez-vous être un peu plus verbeux? Je ne pense pas que je déteste la question ... – rkj

+0

Cela ressemble à une question d'un manuel - hors contexte. Mais il semble que Jon avait déjà une réponse ... :-) – splattne

+0

Cela ressemble à des devoirs. –

Répondre

4

Tant que vous vous attendez à ce que les opérations puissent déborder, et que la définition de ce que vous essayez de faire autorise un débordement (ou l'exige éventuellement), cela rend la vie beaucoup plus facile.

Par exemple, un algorithme de calcul d'un hachage est:

  • Commencez par un nombre premier
  • Pour chaque champ dans votre objet, multiplier le résultat courant par un autre nombre premier, et ajoutez le hachage le champ

Par exemple:

int ret = 37; 
ret = ret * 37 + field1.GetHashCode() * 23; 
ret = ret * 37 + field2.GetHashCode() * 23; 
ret = ret * 37 + field3.GetHashCode() * 23; 
return ret; 

ici, l'un des les calculs pourraient déborder, mais ça va - nous ne sommes pas vraiment intéressés par l'ampleur du nombre, juste le but qu'il est susceptible d'être différent pour différents objets, mais la même chose pour des objets égaux.

Essayer de faire cela sans débordement est une douleur - vous pourriez utiliser XOR, mais cela a d'autres inconvénients.

Questions connexes