我一直在做C#OOP的速成课程,我很想知道下面代码中“LIST”关键字代表什么:
var actors = new List<Actor>();
答案 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。