我需要一个或多或少等同于C ++ std::vector
的.NET 3.5类:
之前我使用ArrayList
并且它是正确的,除了它存储object
并且我必须将检索到的对象转换为正确的类型并且我可以在那里添加任何东西并且这使得编译时类型更加努力地检查。
是否有类似ArrayList
的内容,但是按包含的类型进行参数设置?
答案 0 :(得分:5)
听起来像是在List<T>
之后。例如,要创建整数列表:
List<int> integers = new List<int>();
integers.Add(5); // No boxing required
int firstValue = integers[0]; // Random access
// Iteration
foreach (int value in integers)
{
Console.WriteLine(value);
}
请注意,您可能希望通过IEnumerable<T>
,ICollection<T>
或IList<T>
而不是具体类型公开此类列表。
您不需要.NET 3.5 - 它们是在.NET 2中引入的(这是将泛型作为一项功能引入的时候)。但是,在.NET 3.5中,LINQ可以更轻松地处理任何类型的序列:
IEnumerable<int> evenIntegers = integers.Where(x => x % 2 == 0);
(还有更多)。
答案 1 :(得分:4)
用您的类型替换T
。
实施例
// Create an empty List<int>
List<int> numbers = new List<int>();
numbers.Add(4);
// Use the c# collection initializer to add some default values;
List<int> numbersWithInitializer = new List<int> { 1, 4, 3, 4 };