为什么我在以下声明中收到错误?
List<int> intrs = new List<int>().AddRange(new int[]{1,2,3,45});
Run Code Online (Sandbox Code Playgroud)
错误:无法将类型void转换为List?
Dar*_*rov 16
因为AddRange函数不返回值.您可能需要分两步执行此操作:
List<int> intrs = new List<int>();
intrs.AddRange(new int[]{1,2,3,45});
Run Code Online (Sandbox Code Playgroud)
您还可以使用集合初始值设定项(假设C#3.0+).
List<int> intrs = new List<int> { 1, 2, 3, 45 };
Run Code Online (Sandbox Code Playgroud)
由280Z28编辑:这适用于任何Add方法.构造函数括号是可选的 - 如果要将事物传递给构造函数(如容量),则可以使用上面的代码List<int>(capacity)而不是List<int>上面写的.
以下是有关Object和Collection Initializers的详细信息的MSDN参考.
Dictionary<string, string> map = new Dictionary<string, string>()
{
{ "a", "first" },
{ "b", "second" }
};
Run Code Online (Sandbox Code Playgroud)
因为AddRange修改指定的列表而不是返回包含添加项的新列表.为了表明这一点,它返回void.
试试这个:
List<int> intrs = new List<int>();
intrs.AddRange(new int[]{1,2,3,45});
Run Code Online (Sandbox Code Playgroud)
如果要在不修改原始列表的情况下创建新列表,可以使用LINQ:
List<int> intrs = new List<int>();
List<int> newIntrs = intrs.Union(new int[]{1,2,3,45}).ToList();
// intrs is unchanged
Run Code Online (Sandbox Code Playgroud)
AddRange不会返回它添加项目的列表(与StringBuilder不同).你需要做这样的事情:
List<int> intrs = new List<int>();
intrs.AddRange(new int[]{1,2,3,45});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |