簡體   English   中英

清單 <T> 。能力實施

[英]List<T>.Capacity implementation

我正在查看List<T>的源代碼。 它具有以下屬性:

public int Capacity {
get {
    Contract.Ensures(Contract.Result<int>() >= 0);
    return _items.Length;
}
set {
    if (value < _size) {
        ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.value, ExceptionResource.ArgumentOutOfRange_SmallCapacity);
    }
    Contract.EndContractBlock();

    if (value != _items.Length) {
        if (value > 0) {
            T[] newItems = new T[value];
            if (_size > 0) {
                Array.Copy(_items, 0, newItems, 0, _size);
            }
            _items = newItems;
        }
        else {
            _items = _emptyArray;
        }
    }
}

}

檢查if (value > 0)是什么,好像不是由於if (value < _size)會到達此代碼而導致?

您會忘記value_size均為0的情況。請參見else塊,它引用_emptyArray 處理以下情況。

var list = new List<string>(16);
Debug.Assert(list.Count == 0);
Debug.Assert(list.Capacity == 16);
list.Capacity = 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM