在NET 1.1,DataRowCollection.Clear
调用DataTable.Clear
然而,在NET 2.0,是有区别的。 如果我正确理解源代码,DataTable.Clear
将清除未连接的行(使用DataTable.NewRow
创建),而DataRowCollection.Clear不会。
区别在于RecordManager.Clear
(源代码下面,来自.Net Reference Source v3.5 SP 0); clearAll
仅当从DataTable.Clear
调用时才为真。
internal void Clear(bool clearAll) {
if (clearAll) {
for(int record = 0; record < recordCapacity; ++record) {
rows[record] = null;
}
int count = table.columnCollection.Count;
for(int i = 0; i < count; ++i) {
//
DataColumn column = table.columnCollection[i];
for(int record = 0; record < recordCapacity; ++record) {
column.FreeRecord(record);
}
}
lastFreeRecord = 0;
freeRecordList.Clear();
}
else { // just clear attached rows
freeRecordList.Capacity = freeRecordList.Count + table.Rows.Count;
for(int record = 0; record < recordCapacity; ++record) {
if (rows[record]!= null && rows[record].rowID != -1) {
int tempRecord = record;
FreeRecord(ref tempRecord);
}
}
}
}
什么是清除并重置之间的区别? – Tobi 2008-10-03 10:11:24
这正是我正在寻找的答案,谢谢。 :)你不正确,`。清除()清除列以及;不过,`.Reset()`确实如此。 :) – Chiramisu 2013-04-09 19:06:23