簡體   English   中英

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

[英]A to Z list of char from Enumerable.Range

我想從Enumerable.Range中創建一個列表。 這段代碼是否正確?

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

或者有更好的方法來制作這種類型的列表嗎?

也許是這樣的?

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

好吧, stringIEnumerable<char> ,所以這也可以:

"ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToList()

你必須權衡利弊。

優點:

  • 比你的循環更容易閱讀上面的代碼(主觀,這是我的意見)
  • 更短的代碼(但可能不足以說明問題)

缺點:

  • 如果你不知道什么是更難閱讀.ToList()將使用字符串
  • 例如,可以引入錯誤,你會在這里輕易發現錯誤:

     "ABCDEFGHIJKLMN0PQRSTUVWXYZ".ToList() 

    很容易,我的意思是你會發現錯誤,因為你只是閱讀過代碼,而不是你知道這里有問題並去尋找它。

我拿了Can的答案並做了一個擴展功能:

public static IEnumerable<char> 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]));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM