2011-03-09 4 views
0

Veuillez me suggérer le changement aussi .. Impossible de convertir implicitement le type 'System.Collections.Generic.List' en System.Collections.Generic.IEnumerable '. Une conversion explicite existe (vous manque un casting?)Erreur de conversion implicite

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); 
      } 
     } 

    } 
} 
+8

Le compilateur a déjà trouvé l'erreur pour vous. – BoltClock

Répondre

6

S'il vous plaît me suggérer le changement trop ..

Est-ce l'un de ces:

  • Faites votre méthode accepter une IEnumerable<int> au lieu de IEnumerable<uint>.

  • Utilisez List<uint> au lieu de List<int>.

int représente une gamme signée d'entiers de 32 bits tandis que uint représente une gamme de nombres entiers non signés de 32 bits. En raison de la différence de plage de valeurs, vous ne pouvez pas échanger des classes des deux types génériques int et uint.

0

Le problème est que vous ne pouvez pas lancer uint en int.

+0

C'est complètement faux; vous ** pouvez ** convertir 'uint' en' int'. Seulement dans les cas de débordement, les lancers non contrôlés ne résultent en rien de plus qu'un débordement tandis que les lancers cochés lèvent une exception. – BoltClock

+0

Ok, j'aurais dû dire qu'ils sont de types différents - ils peuvent être moulés les uns dans les autres, mais la liste et la liste ne sont pas les mêmes. – Marco

+0

merci tout le monde..im un débutant complet et merci d'être patient avec moi :) – Krishna

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