gpt4 book ai didi

c# - 计数器不断重置为 0

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:45 25 4
gpt4 key购买 nike

我正在尝试创建自己的 Circular Buffer在 C# 中。我正在使用一个计数器来跟踪我需要插入下一个项目的位置。这是一个Link到完整的代码,这里是(简化的)代码:

public class CircularBuffer<T>
{
private bool _isFull = false;

private int _size;
private int _current = 0;

private BufferItem<T>[] _buffer;

public CircularBuffer(int size)
{
_size = size;
_buffer = new BufferItem<T>[size];
}

public void Insert(T value)
{
BufferItem<T> item = new BufferItem<T>(value);
//Removed code to check if the buffer is full, if so over-write the oldest item
//and don't insert at the current position
_buffer[_current] = item;
_isFull = (_current == (_size - 1));
_current++;

//Age all items
}

在我增加当前位置并尝试添加另一个项目之前,一切都很好,花花公子:

enter image description here

我在这里添加了项目 "first"并且当前位置 ( _current) 递增。

enter image description here

我添加了项目 "third"但当前位置重置为 0。绝对没有其他代码,包括 _current除了声明它、访问它和递增它之外。这到底是怎么回事?这是 BufferItem<T> 的代码:

public class BufferItem<T>
{
public int Age = 0;
public T Item;

public BufferItem(T item)
{
Item = item;
}
}

最佳答案

你的类方法很好。您的 _current 变量也可以正常工作。问题出在 CircularBuffer 类之外。在执行此操作的某个地方,有问题的 CircularBuffer 对象正在以某种方式重置。

关于c# - 计数器不断重置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225682/

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