Le moyen le plus rapide pour énumérer l'alphabet
Je veux parcourir l'alphabet comme suit:
foreach(char c in alphabet)
{
//do something with letter
}
Est un tableau de caractères à la meilleure façon de le faire? (sent hacky)
Edit: La métrique est "moins à taper pour mettre en œuvre tout en étant encore lisible et robuste"
- Quand vous demandez un "meilleur", vous devez donner des métriques pour évaluer l'encontre de, ou sinon tout le monde va se jeter des réponses spécifiques qui probablement ne s'appliquent pas à votre situation unique.
- La seule chose qui peut être hacky comme vous le dites, c'est que vous êtes à l'aide d'une boucle foreach au lieu d'un standard pour la boucle, mais même alors, ce n'est pas vraiment hacky.
- Je cherchais un "plus propre" façon que l'énumération sur un tableau de caractères. La métrique est "moins à taper pour mettre en œuvre tout en étant encore lisible et robuste" - Richard réponse la plus proche de ma pensée originale (dont je n'arrivais pas à articuler au moment de l'interrogation)
- Voir stackoverflow.com/questions/314466/... stackoverflow.com/questions/252662/...
Vous devez vous connecter pour publier un commentaire.
(Ce qui suppose que l'ASCII, etc)
Sinon, vous pouvez diviser un fournisseur et de l'utilisation d'un itérateur (si vous avez l'intention sur le soutien à l'internationalisation):
Enumerable.Range('a', 'z'-'a' + 1).Select(x=>(char)x)
Cast<char>
.Cast
, vous trouverez le compilateur n'accepte pas, à moins que vous lancez àobject
premier. Ce qui en fait un boxe de conversion, de sorte que vous ne pouvez obtenir exactement ce que vous mettez dans. Donc je retire mon commentaire.dynamic
fonctionne. MaisEnumerable.Cast
encore un ancien de style unboxing, donc pas de changement là. Mais il est très facile d'écrire un semblableDynamicCast
extension qui dityield return (TOut)(dynamic)item
, et qui fonctionne.public interface IAlphabetProvider { IList<string> GetAlphabet(); }
ainsi dans votre post pour plus de clarté, comme il est défini par l'utilisateur de l'interface. Prima facie, il semble que siIAlphabetProvider
est déjà existants interface .Net framework bibliothèque de classe et que vous avez tout simplement mis en œuvre pour résoudre des OP du problème.for
boucles surchar
valeurs. Le reste était juste potentiel inspiration de conception si l'OP a voulu aller plus loin.IAlphabetProvider
vient de.Ou vous pourriez le faire,
String.GetEnumerator()
vachar
par char, donc, si vous voulez seulement partielle d'un point de code Unicode/paire de substitution si votre chaîne contient de tels caractères. De sorte que vous pouvez normaliser à la fois votre alphabet et les données que vous comparez par rapport à elle et assurez-vous de penser en termes de numérique codepoints plutôt quechar
: stackoverflow.com/a/28155130/429091foreach
instruction est généralement plus claire pour l'exécution d'une action sur chaque élément d'une séquence - qu'est ce que c'est pour.Vous pourriez faire ceci:
Bien, pas la meilleure manière que ce soit. On pourrait peut-être aider à mieux si nous voulons savoir la raison pour cela.
char
!Utilisation
Énumérable.Gamme
:J'ai trouvé ceci:
tout au hasard de la lecture de ce blog, et pensé que c'était une façon intéressante pour accomplir la tâche.