C# 源码学习——QUEUE
2021-03-20 20:23
标签:查看 length cep pos indent 创建对象 常用 ref city 1、Queue声明创建对象。(Queue为泛型对象。) 本质为Array对象存储数据。 2、队列的空间是实际存储值的两倍,如果小于两倍则每次增场4的长度。 3、Queue为先进先出。 进队列在数组末尾赋值 出队列则从头部取值 4、TryDequeue 与 Dequeue()区别在于 TryDequeue 判断size为0时,返回false 并out 泛型的默认值 注:MaybeNullWhenAttribute(Boolean) 返回值条件。 如果方法返回此值,则关联的参数可能为 null 5、Peek 仅仅时查看一下下一个要返回的值,不从数组移除 随是拙见,但为原创,转载注明出处,敬谢 Queue 常用的方法大约就这些。先写道这里,碎觉。 以下为公众号,一起学起来~
C# 源码学习——QUEUE 标签:查看 length cep pos indent 创建对象 常用 ref city 原文地址:https://www.cnblogs.com/xtt321/p/12293473.htmlpublic class Queue
Queuestring> qy = new Queuestring>();
private T[] _array
public Queue()
{
_array = Array.Empty
Queueint> qy2 = new Queueint>(new Listint>());
public Queue(IEnumerable
1 if (_size == _array.Length)
2 {
3 int newcapacity = (int)((long)_array.Length * (long)GrowFactor / 100);
4 if (newcapacity MinimumGrow)
5 {
6 newcapacity = _array.Length + MinimumGrow;
7 }
8 SetCapacity(newcapacity);
9 }
public void Enqueue(T item)
{
if (_size == _array.Length)
{
int newcapacity = (int)((long)_array.Length * (long)GrowFactor / 100);
if (newcapacity MinimumGrow)
{
newcapacity = _array.Length + MinimumGrow;
}
SetCapacity(newcapacity);
}
_array[_tail] = item;
MoveNext(ref _tail);
_size++;
_version++;
}
public T Dequeue()
{
int head = _head;
T[] array = _array;
if (_size == 0)
{
ThrowForEmptyQueue();
}
T removed = array[head];
if (RuntimeHelpers.IsReferenceOrContainsReferences
public bool TryDequeue([MaybeNullWhen(false)] out T result)
{
int head = _head;
T[] array = _array;
if (_size == 0)
{
result = default!;
return false;
}
result = array[head];
if (RuntimeHelpers.IsReferenceOrContainsReferences
if (_size == 0)
{
result = default!;
return false;
}
result = _array[_head];
return true;