int _GetPrimitiveHashCode(object obj) { switch (obj) { case null: return(0); case IEnumerable <object> e: return(HashCodeEx.SequenceCombine(e.Select(_GetPrimitiveHashCode))); case string s: return(StringComparer.Ordinal.GetHashCode(s)); case Expression expr: return(Visit(expr)); default: return(obj.GetHashCode()); } }
protected override int VisitNewArray(NewArrayExpression na) => HashCodeEx.SequenceCombine(na.Expressions.Select(Visit));