如何在不使用默认值(T)的情况下创建支持引用和值类型的泛型

时间:2015-05-01 06:32:02

标签: c# generics

我尝试将基于Array的通用队列实现为数据结构。

public class ArrayQueue<T>
{
        public T Dequeue()
        {
            if (Queue[Tail] == null)
                return null;

            T value = Queue[Tail];
            Queue[Tail] = null;
            Tail--;
            if (Tail - Head < Queue.Length / (ResizeCoefficient * 2))
                ResizeQueue(Queue.Length / ResizeCoefficient);
            return value;
        }
...
private T[] Queue;
}

正如你所看到的,我使用null作为&#34;空&#34;单元格而不是default(T)。 那是因为如果T是int,default(int) = 0和0可以是有效输入,而不是空值。所以T必须是引用类型或Nullable。但是,我不希望客户打扰它,课程应该同时支持ArrayQueue<int>ArrayQueue<Product>

您能否建议使用没有约束的泛型类的任何解决方案,同时能够Array类型的null

0 个答案:

没有答案