CSharp examples for System:Hash
Get Hash Code Deep
/*/*from w ww. ja v a 2s . c o m*/ * Original author: Nicholas Shulman <nicksh .at. u.washington.edu>, * MacCoss Lab, Department of Genome Sciences, UW * * Copyright 2011 University of Washington - Seattle, WA * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System.Text; using System.Linq; using System.Collections.Generic; using System.Collections; using System; public class Main{ public static int GetHashCodeDeep<T>(IList<T> list) { return list.Aggregate(0, (seed, item) => seed*397 + SafeGetHashCode(item)); } public static int GetHashCodeDeep<TKey, TValue>(IDictionary<TKey, TValue> dict) { return dict.Aggregate(0, (seed, keyValuePair) => seed ^ keyValuePair.GetHashCode() ); } public static int SafeGetHashCode<T>(T item) { return Equals(null, item) ? 0 : item.GetHashCode(); } }