首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List<T>.Capacity实现

List<T>.Capacity实现
EN

Stack Overflow用户
提问于 2015-11-13 16:27:35
回答 1查看 103关注 0票数 0

我正在查看List<T>的源代码。它拥有以下财产:

代码语言:javascript
复制
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),这段代码永远不会到达。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-13 16:32:05

value_size都为0时,您忘记了这种情况。请参阅引用else_emptyArray块。这将处理下面所示的情况。

代码语言:javascript
复制
var list = new List<string>(16);
Debug.Assert(list.Count == 0);
Debug.Assert(list.Capacity == 16);
list.Capacity = 0;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33697400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档