更新:您的评论后,我认为您的问题有误.您可能想要的只是一个简单的基础36计数器.以下是实现它的一种方法:
string base36Characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string toBase36(int x, int digits)
{
char[] result = new char[digits];
for (int i = digits - 1; i >= 0; --i)
{
result[i] = base36Characters[x % 36];
x /= 36;
}
return new string(result);
}
IEnumerable<string> base36Counter()
{
for (int n = 0; n < 36 * 36 * 36 * 36; ++n)
{
yield return toBase36(n, 4);
}
}
void Run()
{
foreach (string s in base36Counter())
Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)
原始答案:我可能会使用yield实现它:
IEnumerable<string> magicCounter()
{
// 0000, 0001, ..., 9999
for (int i = 0; i < 10000; ++i)
{
yield return i.ToString("0000");
}
// A000, A001, ..., Z999
for (char c = 'A'; c <= 'Z'; ++c)
{
for (int i = 0; i < 1000; ++i)
{
yield return c + i.ToString("000");
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2348 次 |
| 最近记录: |