HashTool.cs
上传用户:husern
上传日期:2022-03-24
资源大小:534k
文件大小:2k
源码类别:

编辑器/阅读器

开发平台:

C#

  1. // -- FILE ------------------------------------------------------------------
  2. // name       : HashTool.cs
  3. // project    : Itenso Web User Forms
  4. // created    : Jani Giannoudis - 2008.10.30
  5. // language   : c#
  6. // environment: .NET 2.0
  7. // copyright  : (c) 2008 by Itenso GmbH, Switzerland
  8. // --------------------------------------------------------------------------
  9. using System;
  10. using System.Collections;
  11. using System.Reflection;
  12. using System.Text;
  13. namespace Itenso.WebUserForms.Data
  14. {
  15. // ------------------------------------------------------------------------
  16. /// <summary>
  17. /// Some hash utility methods for collections.
  18. /// </summary>
  19. internal sealed class HashTool
  20. {
  21. // ----------------------------------------------------------------------
  22. public static int AddHashCode( int hash, object obj )
  23. {
  24. int combinedHash = obj != null ? obj.GetHashCode() : 0;
  25. if ( hash != 0 ) // perform this check to prevent FxCop warning 'op could overflow'
  26. {
  27. combinedHash += hash * 31;
  28. }
  29. return combinedHash;
  30. } // AddHashCode
  31. // ----------------------------------------------------------------------
  32. public static int AddHashCode( int hash, int objHash )
  33. {
  34. int combinedHash = objHash;
  35. if ( hash != 0 ) // perform this check to prevent FxCop warning 'op could overflow'
  36. {
  37. combinedHash += hash * 31;
  38. }
  39. return combinedHash;
  40. } // AddHashCode
  41. // ----------------------------------------------------------------------
  42. public static int ComputeHashCode( IEnumerable enumerable )
  43. {
  44. int hash = 1;
  45. if ( enumerable == null )
  46. {
  47. throw new ArgumentNullException( "enumerable" );
  48. }
  49. foreach ( object item in enumerable )
  50. {
  51. hash = hash * 31 + ( item != null ? item.GetHashCode() : 0 );
  52. }
  53. return hash;
  54. } // ComputeHashCode
  55. // ----------------------------------------------------------------------
  56. /// <summary>
  57. /// prevent instantiation of class utility.
  58. /// </summary>
  59. private HashTool()
  60. {
  61. } // HashTool
  62. } // class HashTool
  63. } // namespace Itenso.WebUserForms.Data
  64. // -- EOF -------------------------------------------------------------------