类型“int”不能用作泛型类型或方法“Range”中的类型参数“T”<T>

问题描述 投票:0回答:1

当我尝试发送 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);

         


     }
 }
}


 
c# asp.net oop
1个回答
0
投票

错误说明了一切:参数

T
的任何值都必须实现
ISubtractable<T>
,而
int
则不然。

© www.soinside.com 2019 - 2024. All rights reserved.