C# 声明和初始化列表的较短方法<;ushort>;

C# 声明和初始化列表的较短方法<;ushort>;,c#,list,ushort,C#,List,Ushort,目前,我正在声明并初始化如下列表: List<ushort> myList = new List<ushort>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; List myList=newlist(){1,2,3,4,5,6,7,8,9,10}; 我最终会有更多的ushort列表,其中包含的值将远远超过10个,例如,键入1-100之间的每个数字是低效的。列表将始终是一系列数字 有没有更简短的方法来写这个?我曾尝试研究可枚举.Range,但这只

目前,我正在声明并初始化如下列表:

List<ushort> myList = new List<ushort>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
List myList=newlist(){1,2,3,4,5,6,7,8,9,10};
我最终会有更多的
ushort
列表,其中包含的值将远远超过10个,例如,键入1-100之间的每个数字是低效的。列表将始终是一系列数字


有没有更简短的方法来写这个?我曾尝试研究
可枚举.Range
,但这只处理
int
值,我收到一个“无法将int类型隐式转换为ushort”错误。

显式强制转换如何

List<ushort> myList = Enumerable.Range(1, 100).Select(i => (ushort)i).ToList();

您可以尝试使用循环来填充列表

List<ushort> myList = new List<ushort>();
List myList=new List();
然后在一个方法中使用:

ushort count = 100; //or whatever number you need

for (ushort i = 1; i < count + 1; i++)
    myList.Add(i);
ushort计数=100//或者任何你需要的号码
对于(ushort i=1;i
imo,循环的一个优点是,如果您将来有一个类似类的列表,您可以轻松地在循环中创建类的不同实例并将它们添加到列表中。

list values=Enumerable.Range(1100)。选择(x=>(ushort)x.ToList();
List<ushort> values= Enumerable.Range(1, 100).Select(x => (ushort) x).ToList();

是否使用for循环?Enumerable.Range(…).ToList()?如果您要制作“更多ushort列表”,那么它听起来会重复很多次。我建议您创建自己的静态工厂方法,使用上下限生成列表,并让所有代码使用该工厂方法。如果您想在以后引入更详细、更有效的方法来构建列表,或者如果您改变了使用LINQ或其他什么的想法,因为您没有重复自己,所以这并不重要;在一个地方更改它,每个人都会很高兴,而且您的调用代码也会因此变得更简单。
List myList=Enumerable.Range(1100)。Select(i=>(ushort)i)。GroupBy(x=>x)。SelectMany(x=>x)。Select(x=>x)。ToList():P
Cast
在这里不起作用。它不是为处理这种转换而设计的。它基本上是为身份转换和引用转换而设计的。(我相信在使用service pack之前,它会在这里工作,但那是很久以前的事了。)@sircodesalot:
Select
是正确的方法,因为它可以工作。废话,你说得对。:/这就是我试图搞笑的原因。@AndyBrown:你不会得到编译时警告——它在编译时是完全有效的。
List<ushort> values= Enumerable.Range(1, 100).Select(x => (ushort) x).ToList();