Dea*_*unt 26 c# generics c#-2.0
可以在编译时创建一个数组;
int[] myValues = new int[] { 1, 2, 3 } ;
Run Code Online (Sandbox Code Playgroud)
但我想做这样的事情;
List<int> myValues = new List<int>() { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)
编译器说没有.有没有办法在不使用LINQ(C#3.0)的情况下执行此操作(C#2.0)?
Pat*_*ald 49
List<int> myValues = new List<int>(new int[] { 1, 2, 3 } );
Run Code Online (Sandbox Code Playgroud)
这将创建一个中间数组,但是可能有一种更有效的方法来做同样的事情.
编辑:
John Feminella建议创建一个工厂方法来接受参数列表并返回一个List,您可以按如下方式实现:
List<T> CreateList<T>(params T[] values)
{
return new List<T>(values);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用如下:
List<int> myValues = CreateList(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 33
帕特里克有你想要的答案.但我想补充一点.如果你想做更长的数字范围并且不想手动输入它们,你应该看看Enumerable.Range方法.它可用于在运行时生成一系列序列号.例如,您的样本可能写成如下
var list = Enumerable.Range(1,3).ToList();
Run Code Online (Sandbox Code Playgroud)
您建议的方式首先在 C# 3.0 中引入(与 LINQ 无关,它是引入的语言功能)。
C# 2.0 中没有“快捷方式”(列表初始化)来做到这一点,要么新建列表,然后通过 myValues.Add 手动添加数字,或者您可以执行以下操作:
int[] arrMyValues = new int[] {1, 2, 3};
List<int> myValues = new List<int>(arrMyValues);
Run Code Online (Sandbox Code Playgroud)
T 的列表可以在其构造函数中采用 T 的 IEnumerable,其中它将包含创建的列表中该 IEnumerable 中的所有 T,因为 int[] 实现了 T 的 IEnumerable,因此您可以像这样“混合和匹配”这些功能。
除此之外,C# 2.0 中没有办法做你所描述的这样的事情。
| 归档时间: |
|
| 查看次数: |
78042 次 |
| 最近记录: |