如何解决类型“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 举报,一经查实,本站将立刻删除。