请建议我改变.. 无法将类型'System.Collections.Generic.List'隐式转换为System.Collections.Generic.IEnumerable'。存在显式转换(您是否错过了演员?)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyNamespace
{
class Program
{
static void Main(string[] args)
{
List<int> eventIDs = new List<int>() { 53,90,344,2223,2225,4497,5512};
MatchNumbers(eventIDs,2200,2300);
}
public static void MatchNumbers(IEnumerable<uint> eventsSet, int lowerBound, int upperBound)
{
if (upperBound < lowerBound)
throw new Exception("Lower bound cant be bigger");
List<int> itemSet = (List<int>)eventsSet;
for (int i = lowerBound; i <= upperBound; i++)
{
int result = itemSet.BinarySearch(i);
if (result >= 0)
Console.WriteLine("Found{0}", i);
}
}
}
}
答案 0 :(得分:6)
请建议我改变..
执行以下任一操作:
让您的方法接受IEnumerable<int>
而不是IEnumerable<uint>
。
使用List<uint>
代替List<int>
。
int
表示有符号范围的32位整数,而uint
表示无符号范围的32位整数。由于值的范围不同,您无法互换通用类型int
和uint
的类。
答案 1 :(得分:0)
问题是您无法将uint
投射到int
。
答案 2 :(得分:0)
List<uint> itemSet = eventsSet.toList();