微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决类型“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 实现您的类并公开项目属性,您的代码将起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。