我想从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