类型“int”不能用作泛型方法中的类型参数“T” 'int' 没有拳击转换

问题描述

我正在尝试实现分类垃圾容器。不幸的是,我在 C# 方面还没有那么有经验,而且我显然没有得到处理泛型方法和相应接口的重点。下面是我的代码的一部分。

static void RandomNumbers()
{
    Random random = new Random((int)DateTime.Now.Ticks);
    SortedTrashContainer<int> trash = new SortedTrashContainer<int>(10);
    for (int i = 0; i < trash.Capacity; i++)
        trash.Add(random.Next(10));
    Console.WriteLine("== Random numbers ==");
    foreach (var item in trash)
        Console.Write(item + " ");
}
class SortedTrashContainer<T> where T : IContainer<T>,IComparable<T>
{
    private int size;
    private int pointer = 0;
    private T[] items;
    public int Capacity => size;
    public SortedTrashContainer(int capacity)
    {
        if (capacity >= 0)
        {
            size = capacity;
            items = new T[capacity];
        }
        else
            throw new ArgumentOutOfRangeException();
    }
    public void Add(T item)
    {
        if (pointer < size)
        {
            items[pointer++] = item;
            Sort(items);
        }
        else
            throw new InvalidOperationException();
    }
    private void Sort(T[] array)
    {
        int top = array.Length - 1;
        int indexOfLargest;
        do
        {
            indexOfLargest = 0;
            for (int i = 0; i <= top; i++)
            {
                if (array[indexOfLargest].Compareto(array[i]) < 0)
                    indexOfLargest = i;
            }
            IComparable temp = (IComparable)array[top];
            array[top] = array[indexOfLargest];
            array[indexOfLargest] = (T)temp;
            top--;
        } while (top > 0);
    }
}

在我声明对象 trash 并引用 SortedTrashContainer 并传递 int 类型作为参数的行中,我收到编译错误 “类型 'int ' 不能用作泛型方法 SortedTrashContainer<T> 中的类型参数 T。没有从 int{{1 的装箱转换}}"。不幸的是,我真的被困在这里。只是没有明白这一点,有什么可以解决这个问题。

解决方法

如果您不从 IContainer 实现您的类并公开项目属性,您的代码将起作用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...