使用队列<;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)
但该响应被删除:(
请注意,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