当我尝试发送 int 类型的参数时,它给了我这个错误 CS0315 类型“int”不能用作泛型类型或方法“Range”中的类型参数“T”。没有从“int”到“Assignment_17_C__Advanced_1.ISubtractable”的装箱转换。
namespace Assignment_17_C__Advanced_1
{
public interface ISubtractable<T>
{
T Subtract(T other);
}
public class Range<T> where T : IComparable<T>,ISubtractable<T>
{
private T _min;
private T _max;
public Range(T min, T max)
{
if (min.CompareTo(max) > 0)
throw new ArgumentException("Minimum value must be less than or equal to maximum value");
_min = min;
_max = max;
}
public bool IsInRange(T v)
{
return v.CompareTo(_min)>0 && v.CompareTo(_max) <= 0;
}
public T Length()
{
T length = _max.Subtract(_min);
return length;
}
}
internal class Program
{
static void Main(string[] args)
{
Range<int> range = new Range<int>(10, 20);
range.IsInRange(20);
}
}
}
错误说明了一切:参数
T
的任何值都必须实现 ISubtractable<T>
,而 int
则不然。