gpt4 book ai didi

c# - List 的对象如何添加提供的字符串

转载 作者:行者123 更新时间:2023-11-30 13:34:46 25 4
gpt4 key购买 nike

有人请阐明 Add 方法是如何实现的

(C#中List的Add方法是如何实现的)

listobject.Add();其中 List<User> listobject= new List<User>()是对象的声明。

我知道使用 List 我们可以即时执行许多操作,而且类型安全,但我想知道 id add 方法是如何实现的,以便它在运行时处理所有这些。

希望它不会复制对象并在每次添加时进行调整,但我会祈祷并等待您的回复:)

最佳答案

使用 Reflector您可以确切地看到它是如何实现的。

public void Add(T item)
{
if (this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1);
}
this._items[this._size++] = item;
this._version++;
}

跟随“EnsureCapacity”...

private void EnsureCapacity(int min)
{
if (this._items.Length < min)
{
int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
if (num < min)
{
num = min;
}
this.Capacity = num;
}
}

最后是“容量”的 setter

public int Capacity
{
get
{
return this._items.Length;
}
set
{
if (value != this._items.Length)
{
if (value < this._size)
{
ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.value, ExceptionResource.ArgumentOutOfRange_SmallCapacity);
}
if (value > 0)
{
T[] destinationArray = new T[value];
if (this._size > 0)
{
Array.Copy(this._items, 0, destinationArray, 0, this._size);
}
this._items = destinationArray;
}
else
{
this._items = List<T>._emptyArray;
}
}
}
}

关于c# - List<string> 的对象如何添加提供的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com