ILSpyを使用してmscorlibライブラリを逆コンパイルし、List.Clear
メソッドがArray.Clear(this._items, 0, this._size)
内部で使用していることに気付きました。
// System.Collections.Generic.List<T>
/// <summary>Removes all elements from the <see cref="T:System.Collections.Generic.List`1" />.</summary>
public void Clear()
{
if (this._size > 0)
{
Array.Clear(this._items, 0, this._size);
this._size = 0;
}
this._version++;
}
次に、このArray.Clear
メソッドは、すべての配列要素をゼロ、false、またはnullに設定します。また、メソッドList.RemoveRange
を使用しています。Array.Clear
// System.Array
/// <summary>Sets a range of elements in the <see cref="T:System.Array" /> to zero, to false, or to null, depending on the element type.</summary>
/// <param name="array">The <see cref="T:System.Array" /> whose elements need to be cleared.</param>
/// <param name="index">The starting index of the range of elements to clear.</param>
/// <param name="length">The number of elements to clear.</param>
/// <exception cref="T:System.ArgumentNullException">
/// <paramref name="array" /> is null.</exception>
/// <exception cref="T:System.IndexOutOfRangeException">
/// <paramref name="index" /> is less than the lower bound of <paramref name="array" />.-or-<paramref name="length" /> is less than zero.-or-The sum of <paramref name="index" /> and <paramref name="length" /> is greater than the size of the <see cref="T:System.Array" />.</exception>
/// <filterpriority>1</filterpriority>
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success), SecuritySafeCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void Clear(Array array, int index, int length);
Array.Clear(this._items, 0, this._size)
値型の最初のコードリストで呼び出されるメソッドを無視することは可能ですか?必要ないと思います。私は正しいですか?
この質問は、リストだけでなく、他の一般的なコレクションにも当てはまります。