2017-02-24 1 views
-2

J'essaie de définir une entrée valide pour ma méthode Pairwise. Pairwise prend un argument IEnumerable que j'ai de la difficulté à trouver ce qui est exactement. J'ai essayé beaucoup de choses mais je ne peux jamais vraiment y arriver.C#: Méthode ayant IEnumerable <Type> comme argument. Qu'est-ce qu'une entrée valide?

public delegate void PairwiseDel(Type left, Type right); 

public static void Pairwise(IEnumerable<Type> col, PairwiseDel del) 
{ 
    // stuff happens here which passes pairs from col to del 
} 

Quelqu'un peut-il dire et expliquer ce qu'une entrée valide pour ma méthode serait?

+1

Et oui cela est un travail scolaire, mais vous ne faites pas mes devoirs. Loin de là. C'est une petite étape à laquelle je suis coincé atm. – Nulle

+2

Vous pouvez passer l'objet de n'importe quelle classe qui implémente IEnumerable tel que Liste . Mieux vaut d'abord lire sur les concepts de programmation orientés objet, l'interface et les génériques. –

+0

Le type est une classe définie dans FCL, donc IEnumerable myTypes = new Liste (); peut être passé comme paramètre valide. Ne comprenez pas ce que vous essayez d'accomplir. –

Répondre

0

Ce serait une entrée valide:

var collection = new List<Type>(); 
collection.Add(typeof(string)); 
collection.Add(typeof(int)); 

PairWise(collection, YourDelegateHere); 
+0

Je l'ai maintenant. signifie littéralement la chaîne, int, long, etc mots-clés. Je pensais que c'était une chose abstraite pour moi de pouvoir passer presque n'importe quoi – Nulle

1

IEnumerable<T> est une interface très importante dans la bibliothèque .NET. Il représente une abstraction décrivant une séquence d'éléments de type T.

Cette interface générique a plusieurs implémentations:

  • intégré dans des tableaux 1-dimension T[] mettre en œuvre IEnumerable<T>
  • Toutes les collections .NET génériques mettre en œuvre IEnumerable<T>
  • méthodes qui utilisent yield return produisent IEnumerable<T>
  • multiples méthodes dans la bibliothèque .NET LINQ à la fois prendre et retourner IEnumerable<T>

Si vous souhaitez tester votre méthode, passer un tableau Type[]:

var items = new Type[] { typeof(int), typeof(string), typeof(long) }; 
Pairwise(items, (a, b) => { 
    Console.WriteLine("A={0}, B={1}", a.Name, b.Name); 
}); 
+0

alors vous dites var items = new Type [] {1,2,3,4,5}; serait une entrée valide? Ces erreurs de ma part. Dire activer pour convertir int à System.Type – Nulle

+2

@Nulle Je n'ai jamais dit que vous pouviez initialiser un tableau d'éléments de type 'Type' avec des entiers. Vous devez spécifier des types là-bas. – dasblinkenlight