Самый быстрый способ перечислить алфавит

Я хочу выполнить итерации по алфавиту как так:

foreach(char c in alphabet)
{
 //do something with letter
}

Действительно ли массив символов является лучшим способом сделать это? (чувства hacky)

Править: Метрика "меньше всего вводит для реализации все еще будучи читаемой и устойчивой"

70
задан weston 25 November 2016 в 13:27
поделиться

6 ответов

(Предполагается ASCII и т. Д.)

for (char c = 'A'; c <= 'Z'; c++)
{
    //do something with letter 
} 

В качестве альтернативы, вы можете разделить его на поставщика и использовать итератор (если вы планируете поддерживать интернационализацию):

public class EnglishAlphabetProvider : IAlphabetProvider
{
    public IEnumerable<char> GetAlphabet()
    {
        for (char c = 'A'; c <= 'Z'; c++)
        {
            yield return c;
        } 
    }
}

IAlphabetProvider provider = new EnglishAlphabetProvider();

foreach (char c in provider.GetAlphabet())
{
    //do something with letter 
} 
148
ответ дан 24 November 2019 в 13:16
поделиться

Что ж, чтобы использовать цикл foreach в C #, алфавит может быть любым IEnumerable . Что в этом "хакерского"?

2
ответ дан 6 November 2019 в 23:37
поделиться

Или вы могли бы,

string alphabet = "abcdefghijklmnopqrstuvwxyz";

foreach(char c in alphabet)
{
 //do something with letter
}
37
ответ дан 24 November 2019 в 13:16
поделиться

Можно было сделать так:

for(int i = 65; i <= 95; i++)
{
    //use System.Convert.ToChar() f.e. here
    doSomethingWithTheChar(Convert.ToChar(i));
}

Хотя и не лучшим способом. Может быть, мы могли бы лучше помочь, если бы знали причину этого.

1
ответ дан 24 November 2019 в 13:16
поделиться
Enumerable.Range(65, 26).Select(a => new { A = (char)(a) }).ToList().ForEach(c => Console.WriteLine(c.A));
5
ответ дан 24 November 2019 в 13:16
поделиться

Я нашел это:

foreach(char letter in Enumerable.Range(65, 26).ToList().ConvertAll(delegate(int value) { return (char)value; }))
{
//breakpoint here to confirm
}

случайно читая этот блог, и подумал, что это интересный способ решения задачи.

0
ответ дан 24 November 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: