隐式转换错误

时间:2011-03-09 04:24:24

标签: c#

请建议我改变.. 无法将类型'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);
            }
        }

    }
}

3 个答案:

答案 0 :(得分:6)

  

请建议我改变..

执行以下任一操作:

  • 让您的方法接受IEnumerable<int>而不是IEnumerable<uint>

  • 使用List<uint>代替List<int>

int表示有符号范围的32位整数,而uint表示无符号范围的32位整数。由于值的范围不同,您无法互换通用类型intuint的类。

答案 1 :(得分:0)

问题是您无法将uint投射到int

答案 2 :(得分:0)

List<uint> itemSet = eventsSet.toList();