|
// -- FILE ------------------------------------------------------------------
// name : HashTool.cs
// project : System Framelet
// created : Jani Giannoudis - 2005.12.01
// language : c#
// environment: .NET 2.0
// copyright : (c) 2004-2010 by Itenso GmbH, Switzerland
// --------------------------------------------------------------------------
using System;
using System.Collections;
namespace Itenso.Sys
{
// ------------------------------------------------------------------------
/// <summary>
/// Some hash utility methods for collections.
/// </summary>
public static class HashTool
{
// ----------------------------------------------------------------------
public static int AddHashCode( int hash, object obj )
{
int combinedHash = obj != null ? obj.GetHashCode() : 0;
if ( hash != 0 ) // perform this check to prevent FxCop warning 'op could overflow'
{
combinedHash += hash * 31;
}
return combinedHash;
} // AddHashCode
// ----------------------------------------------------------------------
public static int AddHashCode( int hash, int objHash )
{
int combinedHash = objHash;
if ( hash != 0 ) // perform this check to prevent FxCop warning 'op could overflow'
{
combinedHash += hash * 31;
}
return combinedHash;
} // AddHashCode
// ----------------------------------------------------------------------
public static int ComputeHashCode( IEnumerable enumerable )
{
int hash = 1;
if ( enumerable == null )
{
throw new ArgumentNullException( "enumerable" );
}
foreach ( object item in enumerable )
{
hash = hash * 31 + ( item != null ? item.GetHashCode() : 0 );
}
return hash;
} // ComputeHashCode
} // class HashTool
} // namespace Itenso.Sys
// -- EOF -------------------------------------------------------------------
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
👨 Senior .NET Software Engineer
🚀 My Open Source Projects
-
Time Period Library 👉
GitHub
-
Payroll Engine 👉
GitHub
Feedback and contributions are welcome.