| File: HashCodeCombiner.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.DependencyModel\src\Microsoft.Extensions.DependencyModel.csproj (Microsoft.Extensions.DependencyModel) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; namespace Microsoft.DotNet.PlatformAbstractions { [EditorBrowsable(EditorBrowsableState.Never)] [Obsolete("HashCodeCombiner has been deprecated. Use System.HashCode instead.")] public struct HashCodeCombiner { private long _combinedHash64; public int CombinedHash { [MethodImpl(MethodImplOptions.AggressiveInlining)] get { return _combinedHash64.GetHashCode(); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] private HashCodeCombiner(long seed) { _combinedHash64 = seed; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(int i) { _combinedHash64 = ((_combinedHash64 << 5) + _combinedHash64) ^ i; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(string? s) { int hashCode = (s != null) ? s.GetHashCode() : 0; Add(hashCode); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(object? o) { int hashCode = (o != null) ? o.GetHashCode() : 0; Add(hashCode); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add<TValue>(TValue? value, IEqualityComparer<TValue> comparer) { int hashCode = value != null ? comparer.GetHashCode(value) : 0; Add(hashCode); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static HashCodeCombiner Start() { return new HashCodeCombiner(0x1505L); } } }