/// <summary>
 ///     DataSet拆包
 /// </summary>
 /// <param name="set"></param>
 private unsafe void set(DataSet set)
 {
     if (_tables.length() != 0)
     {
         fixed (byte* dataFixed = _data.Data)
         {
             var TmphBuilder = new TmphDataReader(dataFixed, _data.Strings, _data.Bytes);
             foreach (var table in _tables) set.Tables.Add(table.Get(TmphBuilder));
         }
     }
 }
 /// <summary>
 ///     DataTable拆包
 /// </summary>
 /// <param name="table"></param>
 /// <param name="TmphBuilder">数据对象拆包器</param>
 private unsafe void Get(DataTable table, TmphDataReader TmphBuilder)
 {
     var index = 0;
     var columns = new DataColumn[_columnNames.Length];
     fixed (byte* columnFixed = _columnTypes)
     {
         var columnIndex = columnFixed;
         foreach (var columnName in _columnNames)
         {
             columns[index++] = new DataColumn(columnName,
                 *columnIndex < Types.Length ? Types[*columnIndex] : typeof(object));
             ++columnIndex;
         }
         table.Columns.AddRange(columns);
         fixed (byte* nullFixed = _dbNull)
         {
             var nullMap = new TmphFixedMap(nullFixed);
             for (index = 0; _rowCount != 0; --_rowCount)
             {
                 var values = new object[_columnNames.Length];
                 columnIndex = columnFixed;
                 for (var valueIndex = 0; valueIndex != _columnNames.Length; ++valueIndex)
                 {
                     values[valueIndex] = nullMap.Get(index++) ? DBNull.Value : TmphBuilder.Get(*columnIndex);
                     ++columnIndex;
                 }
                 var row = table.NewRow();
                 row.ItemArray = values;
                 table.Rows.Add(row);
             }
         }
     }
 }
 /// <summary>
 ///     DataTable拆包
 /// </summary>
 /// <param name="value"></param>
 /// <returns></returns>
 public static unsafe DataTable Get(TmphDataTable value)
 {
     if (value == null) return null;
     var table = new DataTable(value._name);
     try
     {
         if (value._rowCount != 0)
         {
             fixed (byte* dataFixed = value._data.Data)
             {
                 var TmphBuilder = new TmphDataReader(dataFixed, value._data.Strings, value._data.Bytes);
                 value.Get(table, TmphBuilder);
             }
         }
         return table;
     }
     catch (Exception error)
     {
         table.Dispose();
         TmphLog.Error.Add(error, null, false);
     }
     return null;
 }
 /// <summary>
 ///     DataTable拆包
 /// </summary>
 /// <param name="TmphBuilder">数据对象拆包器</param>
 /// <returns></returns>
 public DataTable Get(TmphDataReader TmphBuilder)
 {
     var table = new DataTable(_name);
     if (_rowCount != 0)
     {
         try
         {
             Get(table, TmphBuilder);
         }
         catch (Exception error)
         {
             table.Dispose();
             table = null;
             TmphLog.Error.Add(error, null, false);
         }
     }
     return table;
 }