C#Concepts:“LIST”关键字代表什么?

时间:2010-02-02 07:41:21

标签: c# list

我一直在做C#OOP的速成课程,我很想知道下面代码中“LIST”关键字代表什么:

var actors = new List<Actor>();

4 个答案:

答案 0 :(得分:8)

List<T>是一个带有类型参数的类。这称为“泛型”,允许您在类中不透明地操作对象,尤其适用于列表或队列等容器类。

一个容器只存储东西,它实际上并不需要知道它存储的是什么。我们可以在没有泛型的情况下实现它:

class List
{
    public List( ) { }
    public void Add( object toAdd ) { /*add 'toAdd' to an object array*/ }
    public void Remove( object toRemove ) { /*remove 'toRemove' from array*/ }
    public object operator []( int index ) { /*index into storage array and return value*/ }
}

但是,我们没有类型安全。我可以像这样滥用那个集合中的地狱:

List list = new List( );
list.Add( 1 );
list.Add( "uh oh" );
list.Add( 2 );
int i = (int)list[1]; // boom goes the dynamite

在C#中使用泛型允许我们以类型安全的方式使用这些类型的容器类。

class List<T>
{
    // 'T' is our type.  We don't need to know what 'T' is,
    // we just need to know that it is a type.

    public void Add( T toAdd ) { /*same as above*/ }
    public void Remove( T toAdd ) { /*same as above*/ }
    public T operator []( int index ) { /*same as above*/ } 
}

现在,如果我们尝试添加一些不属于的东西,我们会得到一个编译时间错误,这比我们的程序执行时发生的错误要好得多。

List<int> list = new List<int>( );
list.Add( 1 );               // fine
list.Add( "not this time" ); // doesn't compile, you know there is a problem

希望有所帮助。很抱歉,如果我在那里犯了任何语法错误,我的C#就生锈了;)

答案 1 :(得分:5)

它不是关键字,而是类标识符。

答案 2 :(得分:2)

List&lt; Actor&gt;()描述了Actor对象的列表。通常,列表是以某种方式排序的对象集合,可以通过索引访问。

答案 3 :(得分:0)

这不是通用的OO概念。它是.NET库中的一种类型。我建议你选择一个好的C# & .NET book