/// <summary>
 ///     获取二元表达式
 /// </summary>
 /// <param name="type">表达式类型</param>
 /// <param name="left">左表达式</param>
 /// <param name="right">右表达式</param>
 /// <param name="method">运算符重载函数</param>
 /// <returns>二元表达式</returns>
 internal static TmphBinaryExpression Get(TmphExpressionType type, TmphExpression left, TmphExpression right,
     MethodInfo method)
 {
     var expression = TmphTypePool<TmphBinaryExpression>.Pop() ?? new TmphBinaryExpression();
     expression.NodeType = type;
     expression.Method = method;
     ++(expression.Left = left.SimpleExpression).ExpressionCount;
     ++(expression.Right = right.SimpleExpression).ExpressionCount;
     return expression;
 }
 /// <summary>
 ///     一元表达式
 /// </summary>
 /// <param name="type">表达式类型</param>
 /// <param name="expression">表达式</param>
 /// <param name="method">运算符重载函数</param>
 protected void set(TmphExpressionType type, TmphExpression expression, MethodInfo method)
 {
     NodeType = type;
     Method = method;
     ++(Expression = expression.SimpleExpression).ExpressionCount;
 }
 /// <summary>
 ///     获取一元表达式
 /// </summary>
 /// <param name="type">表达式类型</param>
 /// <param name="expression">表达式</param>
 /// <param name="method">运算符重载函数</param>
 /// <returns>一元表达式</returns>
 internal static TmphUnaryExpression Get(TmphExpressionType type, TmphExpression expression, MethodInfo method)
 {
     var unaryExpression = TmphTypePool<TmphUnaryExpression>.Pop() ?? new TmphUnaryExpression();
     unaryExpression.set(type, expression, method);
     return unaryExpression;
 }
 /// <summary>
 ///     获取常量转换处理函数
 /// </summary>
 /// <param name="type">数据类型</param>
 /// <returns>失败返回null</returns>
 public Action<TmphConverter, TmphExpression> this[TmphExpressionType type]
 {
     get { return converters[(int)type]; }
 }