使用队列<;T>;在C#中

本文关键字:gt lt 队列 | 更新日期: 2023-09-27 18:24:58

我有一个C#类,它有3个私有成员,其中两个是类型Queue<uint>,一个是Queue<int>。我正在尝试创建一个函数,我可以将队列传递到该函数中,该函数将把队列的长度调整为特定值,但我无法编译任何内容。我试过以下

private Queue<uint> a;
private Queue<int> b;
...
this.trimQueue(a);
this.trimQueue(b);
...
private void trimQueue(Queue<t> tempqueue)
{
     while (tempqueue.Count > _MAX_VALUES)
     {
          tempqueue.Dequeue();
     }
}

我也尝试过以下几种,但没有成功。

private void trimQueue<t>(t tempqueue) where t : Queue<t>

有人能给我指正确的方向吗。

更新:似乎正确的答案是

private void trimQueue<T>(Queue<T> tempqueue)

但该响应被删除:(

使用队列<;T>;在C#中

请注意,Queue<int>Queue<uint>被视为不同的类型。

因此,您必须使trimQueue方法也通用:

private void trimQueue<T>(Queue<T> tempqueue)
{
     while (tempqueue.Count > _MAX_VALUES)
     {
         tempqueue.Dequeue();
     }
}

使用以下类型进行调用:

this.trimQueue<uint>(a);
this.trimQueue<int>(b);

您可以使用private void TrimQueue<T>(Queue<T> queue)为了限制T,您还可以添加where T : struct