哪个.net 3.5集合用于一种类型的可变长度对象数组?

时间:2011-03-18 07:20:28

标签: c# .net collections

我需要一个或多或少等同于C ++ std::vector的.NET 3.5类:

  • 包含的对象类型已修复
  • 按索引随机访问
  • 可以创建一个空容器并根据需要添加对象

之前我使用ArrayList并且它是正确的,除了它存储object并且我必须将检索到的对象转换为正确的类型并且我可以在那里添加任何东西并且这使得编译时类型更加努力地检查。

是否有类似ArrayList的内容,但是按包含的类型进行参数设置?

2 个答案:

答案 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)

List<T>

用您的类型替换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 };