public override int GetHashCode() { switch (Type) { case MondValueType.Undefined: return(int.MinValue); case MondValueType.Null: return(int.MaxValue); case MondValueType.True: return(1); case MondValueType.False: return(0); case MondValueType.Object: return(ObjectValue.GetHashCode()); case MondValueType.Array: return(ArrayValue.GetHashCode()); case MondValueType.Number: return(_numberValue.GetHashCode()); case MondValueType.String: return(_stringValue.GetHashCode()); case MondValueType.Function: return(FunctionValue.GetHashCode()); } throw new NotSupportedException(); }
public override int GetHashCode() { switch (Type) { case MondValueType.Undefined: return(int.MinValue); case MondValueType.Null: return(int.MaxValue); case MondValueType.True: return(1); case MondValueType.False: return(0); case MondValueType.Object: if (TryDispatch("__hash", out var result, this)) { if (result.Type != MondValueType.Number) { throw new MondRuntimeException(RuntimeError.HashWrongType); } return((int)result); } return(ObjectValue.GetHashCode()); case MondValueType.Array: return(ArrayValue.GetHashCode()); case MondValueType.Number: return(_numberValue.GetHashCode()); case MondValueType.String: return(_stringValue.GetHashCode()); case MondValueType.Function: return(FunctionValue.GetHashCode()); } throw new NotSupportedException(); }