An integer array as a key for Dictionary
You can create an IEqualityComparer
to define how the dictionary should compare items. If the ordering of items is relevant, then something like this should work:
public class MyEqualityComparer : IEqualityComparer<int[]>{ public bool Equals(int[] x, int[] y) { if (x.Length != y.Length) { return false; } for (int i = 0; i < x.Length; i++) { if (x[i] != y[i]) { return false; } } return true; } public int GetHashCode(int[] obj) { int result = 17; for (int i = 0; i < obj.Length; i++) { unchecked { result = result * 23 + obj[i]; } } return result; }}
Then pass it in as you create the dictionary:
Dictionary<int[], string> dic = new Dictionary<int[], string>(new MyEqualityComparer());
Note: calculation of hash code obtained here:What is the best algorithm for an overridden System.Object.GetHashCode?
Maybe you should consider using a Tuple
var myDictionary = new Dictionary<Tuple<int,int>, string>(); myDictionary.Add(new Tuple<int,int>(3, 3), "haha1"); myDictionary.Add(new Tuple<int,int>(5, 5), "haha2");
According to MSDN , Tuple objects Equals
method will use the values of the two Tuple objects