我想從Enumerable.Range創建一個列表。這段代碼是否正確?從Enumerable.Range的字符到Z的列表
SurnameStartLetterList = new List<char>();
Enumerable.Range(65, 26).ToList().ForEach(character => SurnameStartLetterList.Add((char)character));
或者還有更好的方法來使這種類型的列表?
感謝提前:)
我想從Enumerable.Range創建一個列表。這段代碼是否正確?從Enumerable.Range的字符到Z的列表
SurnameStartLetterList = new List<char>();
Enumerable.Range(65, 26).ToList().ForEach(character => SurnameStartLetterList.Add((char)character));
或者還有更好的方法來使這種類型的列表?
感謝提前:)
好,string
爲IEnumerable<char>
,所以這也將工作:
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToList()
你必須權衡這個利弊。
優點:
缺點:
.ToList()
將使用字符串能引入錯誤,例如,你會很容易地發現這裏的錯誤:
"ABCDEFGHIJKLMN0PQRSTUVWXYZ".ToList()
通過輕鬆地我的意思是,你會發現錯誤,你只是讀過去的代碼,而不是你是否知道這裏有一個問題,並且正在尋找它。
哈哈!我錯誤地複製了您發佈的第二個版本(數字爲「0」)。我很高興在我開始拔頭髮之前立即抓住它! – trnelson 2015-09-23 16:03:57
如果你的目的可以使用'IList
也許這樣嗎?
var surnameList = Enumerable.Range('A', 'Z' - 'A' + 1).
Select(c => (char)c).ToList();
我**真的**喜歡這個解決方案,我最初的反應是*沒辦法,不能這樣做*,但是果然。 – 2011-04-17 15:27:35
更有趣的是做一個unicode版本! – 2011-04-17 15:40:41
你是什麼意思? – 2011-04-17 16:25:31
我把罐頭的答案,並提出了擴展功能:
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]));
'新名單 { 'A', 'B',... 'Z'}'我現在閉嘴。 –
BoltClock
2011-04-17 13:46:38
@BoltClock:你最好;) – TCM 2011-04-17 13:50:58
但我應該這樣說:不應該你的'Range()'是'Range(65,26)'?第二個參數不是結束數字,它是範圍的長度。 – BoltClock 2011-04-17 13:51:07