来自Enumerable.Range的A到Z的char列表

我想从Enumerable.Range中创建一个列表。 这段代码是否正确?

SurnameStartLetterList = new List(); Enumerable.Range(65, 26).ToList().ForEach(character => SurnameStartLetterList.Add((char)character)); 

或者有更好的方法来制作这种类型的列表吗?

好吧, stringIEnumerable ,所以这也可以:

 "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToList() 

你必须权衡利弊。

优点:

  • 比你的循环更容易阅读上面的代码(主观,这是我的意见)
  • 更短的代码(但可能不足以说明问题)

缺点:

  • 如果你不知道什么是更难阅读.ToList()将使用字符串
  • 例如,可以引入错误,你会在这里轻易发现错误:

     "ABCDEFGHIJKLMN0PQRSTUVWXYZ".ToList() 

    很容易,我的意思是你会发现错误,因为你只是阅读代码,而不是你知道这里有问题并去寻找它。

也许是这样的?

 var surnameList = Enumerable.Range('A', 'Z' - 'A' + 1). Select(c => (char)c).ToList(); 

我拿了Can的答案并做了一个扩展function:

 public static IEnumerable Range(char start, char end) { return Enumerable.Range((int)start, (int)end - (int)start + 1).Select(i => (char)i); } 

用法:

 Console.WriteLine(Range('a', 'f').Contains("Vive La France!"[6]));