J'essaie de lancer merci d'avance! P> p> Liste
Liste
6 Réponses :
Si vous pouvez utiliser LINQ, alors le Vous pouvez également utiliser le si vous n'utilisez pas C # 3 Ensuite, vous devrez utiliser l'ancienne syntaxe de déléguée plutôt qu'une lambda: p> couler code> < / a> méthode fera ce dont vous avez besoin:
convertiall code>
méthode, comme Stan pointe dans sa réponse: p>
@nader: J'essaie toujours de me rappeler que lorsque Linq n'est pas disponible, alors la syntaxe Lambda.
Et juste pour préempter les nitpickers ... Je suis conscient que VS2008 peut cibler des versions antérieures de la structure .NET, qui permettrait l'utilisation de la syntaxe Lambda mais non linq. Mais, en tant que règle de pouce, aucun Linq ne signifie généralement pas de Lambdas aussi.
Si vous utilisez .NET 3.5, vous pouvez utiliser, de cette façon, vous n'avez pas à faire une tolorme supplémentaire (). Vous pouvez également fournir votre propre convertisseur si vous devez convertir des objets avancés.
foreach(object item in listObject) { string convertedItem = item as String; if(convertedItem != null) listString.Add(convertedItem); }
Ceci est également pris en charge dans .NET 2.0 (sans linq, bien que la syntaxe Delgate ne soit pas aussi belle). Une note cependant, je ne crois pas que le .Cast
Je pense que vous voulez dire C # 3.0 et .NET 3.5.
@nader: J'impliquais que Tolist () fait une énumération supplémentaire.
@Stan: Êtes-vous sûr? Tolist () provoquera une énumération, mais c'est tout. Cast
@Nader: Je suis à peu près sûr que je sois énumère une fois d'exécuter la distribution sur chaque objet puis de tolérer une autre énumération que je crois (cela appelle-t-il la copie)
@Stan: la méthode couler code> renvoie simplement un objet itérateur qui ne fait rien avant de commencer à énumérer la séquence (avec
Tolist code>,
foreach code>), A quel point il jette et diffuse un élément à la fois. La séquence n'est énumérée qu'une seule fois.
@Stan: Cela dit, bien que le " couler code> alors
tolist code>" approche et la
approche convertall code> énumère la séquence une fois, je Attendez-vous à
ConvertiLL CODE> Pour être marginalement plus rapide, car il bouge via la liste Source
Liste Code> S sous-jacent de la matrice sous-jacente directement plutôt que d'utiliser un objet itérateur. (Bien que je doute si cette différence serait perceptible dans la plupart des scénarios du monde réel.)
Je ne pense pas que vous puissiez le faire une étape. Au lieu de cela, essayez quelque chose comme ceci:
C'est faux, il ne veut pas trop tôt () sur thos objet, il veut le convertir en un objet à chaîne. Techniquement, votre exemple fonctionnera cette fois, mais uniquement pour les chaînes. Mais s'il arrive de heurter un objet plus avancé, il ne pourra pas utiliser cette méthode.
List<string> listString = (from o in listObject select (string)o).ToList();
Comment cela: Utilisation: p>
Mon premier message ... espérons que l'utilité semble fonctionner dans mon projet ...
if (PropertyType == typeof(UInt32)) { List<UInt32> UInt32_test = NewProperty.ConvertList(PropertyType); } if (PropertyType == typeof(string)) { List<string> string_test = NewProperty.ConvertList(PropertyType); }
Cela ne sera pas possible dans la version 4 non plus, car ce n'est pas TypeAsafe de «Upcast» ou «Downcast» a
Liste code> - C'est invariant, pas covariant ou contravaret. Au fait, je suis fatigué de cette désinformation affectée à toutes les questions concernant la collecte CO / Contravariance.