C#, как изменить данные в DataTable?

Я определил бы утечки памяти как объект, не освобождающий всю память, выделенную после того, как она завершилась. Я нашел, что это может произойти в Вашем приложении при использовании Windows API и COM (т.е. неуправляемый код, который имеет ошибку в нем или не управляется правильно), в платформе и в сторонних компонентах. Я также нашел, что не плыть по течению после использования определенных объектов как перья может вызвать проблему.

я лично пострадал Из Исключений Памяти, которые могут быть вызваны, но не эксклюзивны к утечкам памяти в точечных сетевых приложениях. (OOM может также прибыть из прикрепления, см. Прикреплять Artical). Если Вы не получаете ошибки OOM или должны подтвердить - ли это утечка памяти, вызывающая его тогда, единственный путь состоит в том, чтобы представить Ваше приложение.

я также попытался бы гарантировать следующее:

a) Все, что реализует Idisposable, расположено или использование наконец блок или оператор использования, они включают кисти, перья и т.д. (некоторые люди требуют ни на что устанавливать все, кроме того)

b), Что-либо, что имеет близкий метод, закрывается снова с помощью наконец или оператор использования (хотя я нашел, что использование не всегда закрывается зависящий, если Вы объявили объект вне оператора использования)

c) при использовании неуправляемого API кода/окон, что с ними имеют дело правильно после. (некоторые имеют, очищают методы для высвобождения средств)

Hope, которой это помогает.

17
задан Rémi 15 July 2013 в 15:37
поделиться

2 ответа

Попробуйте метод SetField:

table.Rows [i] .SetField (столбец, значение);
table.Rows [i] .SetField (columnIndex, значение);
table.Rows [i] .SetField (columnName, value);

Это должно выполнить работу и немного «чище», чем при использовании Rows [i] [j].

42
ответ дан 30 November 2019 в 10:12
поделиться

dt.Rows [1] .ItemArray дает вам копию массивов элементов. Когда вы изменяете его, вы не изменяете оригинал.

Вы можете просто сделать это:

dt.Rows[1][3] = "Value";

Свойство ItemArray используется, когда вы хотите изменить все значения строк.

например:

dt.Rows[1].ItemArray = newItemArray;
16
ответ дан 30 November 2019 в 10:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: