Информация об изменениях

Сообщение Re[43]: MS забило на дотнет. Питону - да, сишарпу - нет? от 01.09.2021 13:59

Изменено 01.09.2021 14:11 Serginio1

Re[43]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:


S>Это где это каждый столбец представлен массивом? Рекордсет традиционно представлен "массивом" строк, каждая из которых — "массив" значений.

S>При этом "копировать", собственно, ничего не надо. В реализации IDataRow можно делать конвертацию на лету при помощи MemoryMarshal.
В DataTable. Там типизированный массив колонок.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/adding-columns-to-a-datatable
Re[43]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:


S>Это где это каждый столбец представлен массивом? Рекордсет традиционно представлен "массивом" строк, каждая из которых — "массив" значений.

S>При этом "копировать", собственно, ничего не надо. В реализации IDataRow можно делать конвертацию на лету при помощи MemoryMarshal.
В DataTable. Там типизированный массив колонок.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/adding-columns-to-a-datatable

  public class DataColumn : MarshalByValueComponent
  {
    private DataStorage _storage;


internal sealed class UInt32Storage : DataStorage
  {
    private const uint defaultValue = 0;
    private uint[] values;


public override object Get(int record)
    {
      uint num = this.values[record];
      if (!num.Equals(0U))
        return (object) num;
      return this.GetBits(record);
    }

    public override void Set(int record, object value)
    {
      if (this.NullValue == value)
      {
        this.values[record] = 0U;
        this.SetNullBit(record, true);
      }
      else
      {
        this.values[record] = ((IConvertible) value).ToUInt32(this.FormatProvider);
        this.SetNullBit(record, false);
      }
    }